バックグラウンドで実行されているプロセスのPIDを取得するには?

バックグラウンドで実行されているプロセスのPIDを取得するには?

使っていますこれバックグラウンドでプロセスを実行する方法です。

"$@" &>/dev/null &disown

次のことをどのように達成できますか?

  1. 背景のインポートpid
  2. 他のスクリプトで使用できるように返しますか?

答え1

シェルは、最後に開始されたバックグラウンドジョブのプロセスIDを使用できます$!

たとえば、ファイルや標準出力に出力できます。

"$@" &>/dev/null &
disown

printf '%d\n' "$!" >background.pid

それから他のスクリプト

./first-script.sh some command line

thepid=$( <background.pid )

あるいは、最初のスクリプトが単にプロセスIDを標準出力として印刷する場合、2番目のスクリプトは次のことを実行できます。

thepid=$( ./first-script.sh some command line )

関連情報