【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して標準出力してるだけのようにも見えるな。
実際はもう少し中身凝ってるんだろうが。