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
。