すべてのバックグラウンドプロセスの終了

すべてのバックグラウンドプロセスの終了

Stoppedいくつかのバックグラウンドプロセスがあります。

kill $(jobs -p)そしてkill `jobs -p`効果もありません。

kill %1などを使用してkill %2各プロセスを正常に終了します。

1つのコマンドですべてのバックグラウンドプロセスを終了するには?

また、最初の2つのコマンドが私にうまくいかないのはなぜですか?

私はLinux Mint 15、64ビットを実行しています。

ベストアンサー1

彼らが走るとき

killの出力でこれを行うことができるようですjobs -p

はい

$ sleep 1000 &
[1] 21952
$ sleep 1000 &
[2] 21956
$ sleep 1000 &
[3] 21960

3つの偽のジョブが実行されています。

$ jobs
[1]   Running                 sleep 1000 &
[2]-  Running                 sleep 1000 &
[3]+  Running                 sleep 1000 &

次のようにそれらを殺す:

$ kill $(jobs -p)
[1]   Terminated              sleep 1000
[2]-  Terminated              sleep 1000
[3]+  Terminated              sleep 1000

彼らが消えたことを確認してください。

$ jobs
$

彼らが止まるとき

ジョブを実行するのではなくジョブを停止した場合は、これを実行できます。

はい

$ kill $(jobs -p)

$ jobs
[1]+  Stopped                 sleep 1000
[2]-  Stopped                 sleep 1000
[3]   Stopped                 sleep 1000

まあ、それはそれらを殺さなかったが、プロセス自体が終了信号を処理できなかったので中断されました。だからOSに死ぬと言ってください。それがまさにa-9の目的です。

$ kill -9 $(jobs -p)
[1]+  Killed                  sleep 1000
[2]-  Killed                  sleep 1000
[3]   Killed                  sleep 1000

これは良いです。

$ jobs
$ 

一部が実行中で、一部が停止している場合

一部は停止し、一部は実行中のプロセスが混在している場合はkill最初に実行してから実行できますkill -9

$ kill $(jobs -p); sleep <time>; \
    kill -18 $(jobs -p); sleep <time>; kill -9 $(jobs -p)

プロセスが最初に停止するのにさらに時間がかかる場合は、時間を少し延ばしてください。

シグナル

HUP(-1)またはSIGTERM(-15)で倒すと成功しません。しかし、なぜ?これは、これらの信号がアプリケーションにセルフシャットダウンを指示するため、より使い慣れているためです。ただし、アプリケーションが停止しているため、これらの信号を処理できません。したがって、唯一のオプションはSIGKILL(-9)を使用することです。

kill提供されているすべての信号を見ることができますkill -l

$ kill -l | column -t
1)   SIGHUP       2)   SIGINT       3)   SIGQUIT      4)   SIGILL       5)   SIGTRAP
6)   SIGABRT      7)   SIGBUS       8)   SIGFPE       9)   SIGKILL      10)  SIGUSR1
11)  SIGSEGV      12)  SIGUSR2      13)  SIGPIPE      14)  SIGALRM      15)  SIGTERM
16)  SIGSTKFLT    17)  SIGCHLD      18)  SIGCONT      19)  SIGSTOP      20)  SIGTSTP
21)  SIGTTIN      22)  SIGTTOU      23)  SIGURG       24)  SIGXCPU      25)  SIGXFSZ
26)  SIGVTALRM    27)  SIGPROF      28)  SIGWINCH     29)  SIGIO        30)  SIGPWR
31)  SIGSYS       34)  SIGRTMIN     35)  SIGRTMIN+1   36)  SIGRTMIN+2   37)  SIGRTMIN+3
38)  SIGRTMIN+4   39)  SIGRTMIN+5   40)  SIGRTMIN+6   41)  SIGRTMIN+7   42)  SIGRTMIN+8
43)  SIGRTMIN+9   44)  SIGRTMIN+10  45)  SIGRTMIN+11  46)  SIGRTMIN+12  47)  SIGRTMIN+13
48)  SIGRTMIN+14  49)  SIGRTMIN+15  50)  SIGRTMAX-14  51)  SIGRTMAX-13  52)  SIGRTMAX-12
53)  SIGRTMAX-11  54)  SIGRTMAX-10  55)  SIGRTMAX-9   56)  SIGRTMAX-8   57)  SIGRTMAX-7
58)  SIGRTMAX-6   59)  SIGRTMAX-5   60)  SIGRTMAX-4   61)  SIGRTMAX-3   62)  SIGRTMAX-2
63)  SIGRTMAX-1   64)  SIGRTMAX

さまざまな信号の詳細については、信号のマニュアルページを確認することをお勧めしますman 7 signal

おすすめ記事