10

子としてbashスクリプトを起動すると、$$を使用して独自のpidを親に渡すことができます。

次のようなバックグラウンドでスクリプトから起動したプログラムのpidを見つける方法はありますか?

ping x.x.x.x &

そのpingのpidは何ですか?

(私は自分自身を正しく表現したことを願っています...私の英語は最高ではありません)

PS。私はシンプルでクリーンな解決策を探しています、私は次のようなものを想像することができます:

ping -t10000 -W10 x.x.x.x &
then
ps ax | grep 'ping -t10000 -W10 x.x.x.x'$

しかし、複雑すぎます。また、スイッチを使用してパーソナライズしたとしても、クリーンではなく、システム内の別のプロセスをキャッチする可能性があります。

4

2 に答える 2

20

この変数$!には、開始した最後のバックグラウンド プロセスの PID が含まれています。

于 2012-05-24T11:58:08.517 に答える
6

これを使用してください:$!必要なPIDを持つコマンドを実行した直後。&ただし、コマンドをバックグラウンドで開始するには、コマンドの後にアンパサンド ( ) を使用する必要があります。例えば:

my_command & CMDPID=$!
echo "$CMDPID"
于 2012-05-24T11:58:38.693 に答える