use*_*888 10 shell kill background-process
我有几个Stopped
后台进程。
kill $(jobs -p)
并且kill `jobs -p`
没有效果
kill %1
, kill %2
, 等成功终止个别进程
如何使用一个命令杀死每个后台进程?
另外,为什么前两个命令对我不起作用?
我正在运行 Linux Mint 15、64 位
slm*_*slm 10
好像你可以做到这一点与kill
和输出jobs -p
。
$ sleep 1000 &
[1] 21952
$ sleep 1000 &
[2] 21956
$ sleep 1000 &
[3] 21960
Run Code Online (Sandbox Code Playgroud)
现在我有 3 个假作业在运行。
$ jobs
[1] Running sleep 1000 &
[2]- Running sleep 1000 &
[3]+ Running sleep 1000 &
Run Code Online (Sandbox Code Playgroud)
像这样杀死他们:
$ kill $(jobs -p)
[1] Terminated sleep 1000
[2]- Terminated sleep 1000
[3]+ Terminated sleep 1000
Run Code Online (Sandbox Code Playgroud)
确认他们都走了。
$ jobs
$
Run Code Online (Sandbox Code Playgroud)
如果您的作业已停止,而不是运行,则改为执行此操作。
$ kill $(jobs -p)
$ jobs
[1]+ Stopped sleep 1000
[2]- Stopped sleep 1000
[3] Stopped sleep 1000
Run Code Online (Sandbox Code Playgroud)
好的,所以没有杀死它们,但那是因为进程本身无法处理终止信号,它已停止。因此,请告诉操作系统进行查杀。这就是 a-9
的用途。
$ kill -9 $(jobs -p)
[1]+ Killed sleep 1000
[2]- Killed sleep 1000
[3] Killed sleep 1000
Run Code Online (Sandbox Code Playgroud)
这样更好。
$ jobs
$
Run Code Online (Sandbox Code Playgroud)
如果您有一个混合的进程,其中一些已停止,一些正在运行,您可以先执行kill
一个kill -9
.
$ kill $(jobs -p); sleep <time>; \
kill -18 $(jobs -p); sleep <time>; kill -9 $(jobs -p)
Run Code Online (Sandbox Code Playgroud)
如果您需要更多时间以允许进程先停止自己,请稍微延长时间。
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
Run Code Online (Sandbox Code Playgroud)
如果您想了解更多有关各种信号的信息,我强烈建议您查看信号手册页man 7 signal
。
归档时间: |
|
查看次数: |
3863 次 |
最近记录: |