GNU/Linux >> Linux の 問題 >  >> Linux

バックグラウンドプロセスのプロセスIDを取得するには?

開始時にバックグラウンド プロセスの PID を保存する必要があります。

foo &
FOO_PID=$!
# do other stuff
kill $FOO_PID

ジョブ制御はインタラクティブな機能であり、制御端末に関連付けられているため、使用できません。スクリプトには必ずしも端末が接続されているとは限らないため、ジョブ制御は必ずしも利用できるとは限りません。


jobs -l を使用できます 特定のジョブに到達するコマンドL

^Z
[1]+  Stopped                 guard

my_mac:workspace r$ jobs -l
[1]+ 46841 Suspended: 18           guard

この場合、46841 が PID です。

help jobs から :

<ブロック引用>

-l ジョブのプロセス グループ ID と作業ディレクトリを報告します。

jobs -p PID のみを表示する別のオプションです。


  • $$ 現在のスクリプトの pid です
  • $! 最後のバックグラウンド プロセスの pid です

これは、bash セッションのサンプル トランスクリプトです (%1 jobs から見たバックグラウンド処理の序数を指す ):

$ echo $$
3748

$ sleep 100 &
[1] 192

$ echo $!
192

$ kill %1

[1]+  Terminated              sleep 100

Linux
  1. Linuxコマンドをバックグラウンドで起動し、ターミナルでプロセスをデタッチする方法

  2. バックグラウンドプロセスを一時停止してフォアグラウンドにする方法は?

  3. バックグラウンドプロセスが独自のPidを知る方法は?

  1. CHILD PROCESSから戻り値を取得するには?

  2. Golang Web サーバーをバックグラウンドで実行するにはどうすればよいですか?

  3. 親プロセスから子プロセスを取得する方法

  1. Rsync プロセスをバックグラウンドで実行する方法

  2. CPU使用率を取得する方法

  3. Linuxでプロセス名を指定してプロセスIDのみを取得するには?