rm /blog

IT系技術職のおっさんがIT技術とかライブとか日常とか雑多に語るブログです。* 本ブログに書かれている内容は個人の意見・感想であり、特定の組織に属するものではありません。/All opinions are my own.*

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