鍍金池/ 問答/Linux/ tomcat配置了生成gc日志的路徑問題

tomcat配置了生成gc日志的路徑問題

catalina.sh里

JAVA_OPTS="-server -showversion -Xms10240m -Xmx10240m -XX:+PrintGC -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -Xloggc:../logs/tomcat_gc.log" 

用jcmd查看

./jcmd  13735  VM.flags 
13735: 
-XX:CICompilerCount=4 -XX:InitialHeapSize=10737418240 -XX:MaxHeapSize=10737418240 -XX:MaxNewSize=697892864 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=697892864 -XX:OldPLABSize=16 -XX:OldSize=10039525376 -XX:ParallelGCThreads=8 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:+UseParNewGC 

運(yùn)行后,卻發(fā)現(xiàn) logs目錄下沒有tomcat_gc.log
但是如果把

 -Xloggc:../logs/tomcat_gc.log

中../logs/tomcat_gc.log改成絕對(duì)路徑就沒問題。
可是我在bin路徑下

  ls ../logs/

沒問題的啊
怎么回事啊?

回答
編輯回答
淚染裳

原因正如 @Yujiaao 說的, 因?yàn)橄鄬?duì)路徑的問題.
但是使用絕對(duì)路徑以后移動(dòng)目錄也很麻煩, 你可以在 tomcat/bin 目錄下新建一個(gè) setenv.sh 文件, 然后把這些配置放到 setenv.sh 中. 在這個(gè)文件可以使用 $CATALIAN_HOME 引用tomcat啟動(dòng)的路徑. 比如:

JAVA_OPTS="-server -showversion -Xms10240m -Xmx10240m -XX:+PrintGC -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -Xloggc:$CATALINA_HOME/logs/tomcat_gc.log" 

相關(guān)信息參考 bin/catalian.sh 文件里的說明

clipboard.png

2017年5月28日 22:26
編輯回答
抱緊我

首先, 問題的主要原因是當(dāng)前工作目錄可執(zhí)行文件的位置之間的差異。要知道, Linux 中當(dāng)前的工作目錄不是可執(zhí)行文件所在的目錄, 而是啟動(dòng)程序的當(dāng)前目錄。

例如, 假設(shè)您有一個(gè)程序current, 它打印出當(dāng)前目錄, 并且它位于/home/user/script中。

如果執(zhí)行此操作:

cd /home/user/script
./current

它將打印出來工作目錄:/home/user/script/但是, 如果你這樣做:

cd /home/user/
script/current

輸出工作目錄將是:/home/user/

你的配置在不同目錄下啟動(dòng)tomcat會(huì)有完全不一樣的效果,如看來,絕對(duì)路徑是更好的選擇。

2018年7月21日 10:37