0

Java プロセス p1 を実行するシェル スクリプトがあり、p1 から入力を受け取る非 Java プロセス p2 もあります。

p1 のプロセス ID を取得するにはどうすればよいですか?

予期しない動作をするシェル スクリプトがあります (動作する場合と動作しない場合があります)。私はネットを閲覧しましたが、完璧な答えはないようです。

私のスクリプト:

nohup sh -c "exec java p1 | p2 2>&1" &
$pid=`echo $!`
my_pid=exec ps -eo "%p %c %P" | awk -v p=$pid 'p==$3{print $1 $2}' | grep java | sed -e 's/java//'

echo "my_pid $my_pid"
4

1 に答える 1

2

これは、リンク先の質問からのmmd の回答の簡略版です。

{ java p1 & echo $! >&2; } | p2 2>&1 &

これにより、p1 の PID が標準エラーに出力されます。シェルから、echo コマンドが終了したことを知らせるメッセージも表示されますが、これは無視してかまいません。

于 2012-05-20T09:43:42.250 に答える