您是否遇到过当您使用应用程序时,它突然变得无法响应并意外崩溃。
无响应的应用程序将无法重新启动,因为原始应用程序进程永远不会被关闭。唯一的解决方案是重新启动系统或终止应用程序进程。
那么怎么解决这种情况,然而我们一般的解决方式都是终止该应用的进程。Linux中你可以使用kill
或者killall
命令终止进程。
本教程向您展示如何使用kill
和killall
命令在Linux终止进程。
这两个命令之间的主要区别在于killall
基于名称终止进程,而kill
是基于进程ID号,也称为PID,终止进程。
进程信号
普通用户可以终止他们自己的进程,但不能终止属于其他用户的进程,而root用户可以终止所有进程。
kill
和killall
可以将指定的进程信号发送到指定的进程或进程组。在没有指定进程信号的情况下,两个命令都将发送-15
或者是-TERM
信号。
kill
和killall
最常用的信号是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中可以使用top
,ps
,pidof
和pgrep
命令查找进程的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工具停止无响应的程序,如有疑问请在下方留言