bashスクリプトから最後の実行プロセスのPIDを取得するには?

bashスクリプトから最後の実行プロセスのPIDを取得するには?

Bashスクリプトで最後に実行されたコマンドのプロセスIDを取得しようとしています。通常私はこうする:

$ nohup ./test > nhout &
nohup: redirecting stderr to stdout
$ echo $!
3006196 #This is the PID

シェルスクリプトで同じことをしようとしています。

#!/bin/bash
for i in {1..10};do
    `nohup ./testscript_${i} > nhout_${i} &`
    echo $! >> pid_list.txt
done

ところで確認してみるとpid_list.txtファイルが空です。私はこれが$!コマンドではなく、私が実行したスクリプトを参照している可能性があることを理解していますnohup。ただし、この問題を解決する方法がわからず、オンラインでリソースが見つかりません。どうやってこれを達成できますか?

ベストアンサー1

nohupコマンドの周りに無効なバックティックペアがあります。その結果、nohupコマンドnohupは実行されるバックティックの出力を生成するための副作用としてのみ実行されます。

この試み:

#!/bin/bash
for i in {1..10}; do
    nohup "./testscript_$i" > "nhout_$i" &
    echo "$!" >> pid_list.txt
done

おすすめ記事