Linux kill/killall终止进程

当您再次尝试启动该应用程序时,但由没有任何反应,这是因为原来的应用程序进程不会完全关闭,因此无法再次启动该应用

3 min read
By myfreax
Linux kill/killall终止进程

您是否遇到过当您使用该应用程序时,它突然变得无法响应并意外崩溃。

当您再次尝试启动该应用程序时,但由没有任何反应,这是因为原来的应用程序进程不会完全关闭,因此无法再次启动该应用。

那么怎么解决这种情况,然而我们一般的解决方式都是终止该应用的进程。Linux中你可以使用kill或者killall命令终止进程。

本教程向您展示如何使用killkillall命令在Linux终止进程。这两个工具之间的主要区别在于killall终止基于名称进程,而kill终止进程是基于进程ID号,也称为PID。

普通用户可以终止他们自己的进程,但不能终止属于其他用户的进程,而root用户可以终止所有进程。

killkillall可以将指定的信号发送到指定的进程或进程组。在没有指定终止信号的情况下,两个工具都将发送信号是 -15或者是-TERM

killkillall最常用的信号是1或者-HUP重启进程。9或者-KILL终止一个进程。15或者-TERM优雅地终止进程。

信号可以用三种不同的方式指定,分别使用数字,例如,-1重启进程,使用SIG前缀。例如-TERM终止进程。没有SIG前缀,例如-HUP

你可使用kill或者killall的-l选项列出所有可用信号,

kill -l  # or killall -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

为了可以使用kill命令终止进程,我们需要先找到进程PID。在Linux中可以使用toppspidofpgrep 命令查找进程的PID。

假设Firefox浏览器没有响应,需要终止Firefox进程。最简单的方式使用pidof找到要Firefox浏览器进程的PID。

pidof firefox命令将打印所有Firefox进程,当找到Firefox进程的PID后。即可使用kill -9 2551 2514 1963 1856 1771终止进程。

现在你可能已经感受到kill对于多进程的应用来说可能不太合适,因为每次都需要输入多个进程PID。这也是killall存在的原因。

killall -9 firefox当运行此命令时,killall将会匹配指定名称的所有进程的PID并终止匹配的进程。

killall命令接受多个选项,例如终止指定用户的进程,使用正则表达式匹配进程的名称,按指定时间匹配进程。

您可以通过键入killall不带任何参数获取所有选项的列表。

例如,如果我们想要终止用户myfreax运行的所有进程,你将运行以下命令:

killall -u myfreax

结论

至此你已经学会使用kill和killall工具停止无响应的程序,如有疑问请在下方留言