myfreax

Linux killall命令终止进程

无响应的应用程序将无法重新启动,因为原始应用程序进程永远不会被关闭。解决方式是终止进程

3 min read
By myfreax
Linux killall命令终止进程
Linux 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

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。

当找到Firefox进程的PID后。即可运行命令使用kill -9 pid_number终止进程。

sudo pidof firefox
sudo kill -9 firefox_pid_number

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

当你使用killall命令时,killall命令搜索进程名称与指定的关键词匹配的进程并终止。

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

在不带任何选项运行killall命令时,将会打印killall命令所有选项的帮助信息。

例如,如果我们想要终止firefox浏览器的所有进程,请运行命令sudo killall -u firefox

killall -u firefox

结论

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

Related Articles