如何在Linux中杀死一个进程
你有没有遇到过这样的情况:你启动了一个应用程序,而在你使用该应用程序时,它突然变得没有反应,意外地崩溃了?你试图再次启动该应用程序,但什么也没有发生,因为原来的应用程序进程从未真正完全关闭。
好吧,在某些时候,我们所有人都发生过这种情况,不是吗?解决办法是终止或杀死应用程序的进程。但是怎么做呢?
幸运的是,在Linux中,有几个工具可以让你杀死错误的进程。
在这篇文章中,我们将告诉你如何在Linux中使用kill
、killall
和pkill
命令来终止一个进程。
这些工具之间的主要区别是,kill
是根据进程ID号(PID)来终止进程,而killall
和pkill
命令是根据它们的名称和其他属性来终止正在运行的进程。
普通用户可以杀死自己的进程,但不能杀死属于其他用户的进程,而root用户则可以杀死所有的进程。
系统杀伤信号
kill
、killall
和pkill
向指定的进程或进程组发送一个给定的信号。当没有指定信号时,每个工具会发送15
(TERM
)。
最常使用的信号是:。
1
(-HUP): 重新加载一个进程。9
(-KILL): 杀死一个进程。15
(-TERM): 优雅地停止一个进程。
信号可以用三种不同的方式来指定。
- 用一个数字(如-1)。
- 带有 "SIG "前缀(例如,-SIGHUP)。
- 不含 "SIG "前缀(例如,-HUP)。
使用-l
选项可以列出所有可用的信号。
kill -l # or killall -l
下面列出的步骤在所有的Linux发行版上都能使用。
使用kill
命令终止进程
要用kill
命令终止一个进程,首先需要找到该进程的PID。你可以使用不同的命令,如top
、ps
、pidof
和pgrep
来完成。
比方说,Firefox浏览器变得没有反应,你需要杀死浏览器进程。要找到进程的ID,使用pidof
命令。
pidof firefox
该命令将打印所有的火狐狸进程。
输出
2551 2514 1963 1856 1771
一旦你知道了Firefox进程的PIDs,就可以终止所有的进程,发送 KILL
信号。
kill -9 2551 2514 1963 1856 1771
使用killall
命令终止进程
killall
命令终止了所有与指定名称相匹配的程序。
使用与之前相同的方案,你可以通过输入以下内容来杀死火狐进程。
killall -9 firefox
killall
接受几个选项,如向指定用户拥有的进程发送信号,根据正则表达式匹配进程名称,以及创建时间。你可以通过在终端输入killall
(不带任何参数)来获得所有选项的列表。
例如,要终止以用户 "sara "身份运行的所有进程,你可以运行以下命令。
sudo killall -u sara
使用pkill
命令终止进程
pkill
终止与命令行中给出的模式相匹配的进程。
pkill -9 firefox
进程的名称不一定要完全匹配。
通过pkill
,你也可以向某个用户拥有的进程发送信号。要想只杀死用户 "sara "所拥有的firefox进程,你可以输入。
pkill -9 -u sara firefox
总结
使用kill
、killall
和pkill
命令终止无反应的程序是一项简单的任务。你只需要知道进程名称或PID。
如果你有任何问题或反馈意见,请随时留言。