GNUコマンドがふんだんに使えるLinuxが好きだけど、職務上HP-UXも使ったりする。
シェルスクリプトで親プロセスを取得したくて、いろいろ調べた時に分かったのでちょっと書いておきます。
#!/bin/sh PID=$$ PPID=$( UNIX95="" ps -o ppid -p $PID | tail -1 ) PCOMM=$( UNIX95="" ps -o comm -p $PPID | tail -1 ) echo PID: $PID echo PPID: $PPID echo PPCOM: $PCOMM
実行結果
% sh ./test.sh
PID: 27324
PPID: 25107
PPCOM: -zsh
と一致しているので大丈夫でしょう。
分かりにくいのはここ。
PPID=$( UNIX95="" ps -o ppid -p $PID | tail -1 )
というのもpsもmanを見てみると、-o format とあるものの「UNIX標準の構文」の部分。
英語だとXPG4の部分。
普通に
ps -o pidとしても
ps: オプションが正しくありません。-- oとか出てくる。
なにこれ、どうすんの?と思ったら、ここを見つけた。
http://d.hatena.ne.jp/cartooh/20050611
要は環境変数UNIX95がセットしてあればいいらしい。値はダミーでもいいみたい。
% UNIX95="dummy" ps -o pid
PID
26857
25107
…やっぱりLinuxが好きだなぁ~。
0 件のコメント:
コメントを投稿