【Solaris】pargsコマンド
Solarisには「pargs」というコマンドがある。
PIDを引数に渡すとそのプロセスの実行オプションを一覧形式でずらーっと並べて表示してくれるコマンドである。
長ったらしいコマンド(特にJava)の場合、psコマンドでもなんとなく実行時オプションは調べられるが、
psコマンドの限界でオプションの最後まで確認できないことが往々にしてあり、そういうときに使う。
使い方は以下の通り(引数に調べたいプロセスのPIDを渡す)
pargs -a [PID]
例えば以下のようなコマンドを実行していたとする。
java -classpath `pwd`/:${JAVA_HOME} -Xmx128M -Dtest.dir=/home/test -Dtest.time=10 -Dtest.autocommit=false -Dtest.db.user=TESTUSER -Dtest.db.pass=TESTPASS -Dtest.db.sid=TESTDB -Dtest.log=test.log -Dtest.outputfile=output_test.txt -Dtest.print.str=HELLO -Dtest.version=1.0 TestJava
これをpsコマンドで探ると↓みたいな結果になる。
$ ps -fa | grep 22136 tstuser 22136 12199 0 12:22:57 pts/17 0:00 java -classpath /home/test/testuser/work/java_work/test/test/2016/11/09/java_ex
最初のclasspathのオプション値が長すぎて見切れてしまっている。
これに対してpargsをかけると
$ pargs -a 22136
22136: java -classpath /home/test/testuser/work/java_work/test/test/2016/11/09/java_exec/
argv[0]: java
argv[1]: -classpath
argv[2]: /home/test/testuser/work/java_work/test/test/2016/11/09/java_exec/:
argv[3]: -Xmx128M
argv[4]: -Dtest.dir=/home/test
argv[5]: -Dtest.time=10
argv[6]: -Dtest.autocommit=false
argv[7]: -Dtest.db.user=TESTUSER
argv[8]: -Dtest.db.pass=TESTPASS
argv[9]: -Dtest.db.sid=TESTDB
argv[10]: -Dtest.log=test.log
argv[11]: -Dtest.outputfile=output_test.txt
argv[12]: -Dtest.print.str=HELLO
argv[13]: -Dtest.version=1.0
argv[14]: TestJava
となって実行時引数(オプション)の内容がずらーっと一覧表示される。
これだけ見ると半角スペースでsplitして標準出力してるだけのようにも見えるな。
実際はもう少し中身凝ってるんだろうが。