在Linux系统中有时想中止一些命令的执行,或者清理一些僵尸进程,kill
命令是个不错的选择。
本教程讲解了Linux系统中如何使用kill
命令中止一些进程。
kill
命令
首先我们对kill
命令做个简单介绍。该kill
命令的语法采用以下形式:
kill [OPTIONS] [PID]..
该kill
命令将信号发送到指定的进程或进程组,使它们根据该信号进行操作。未指定信号时,默认为-15
(-TERM)。
最常用的信号是:
1
(HUP
)-重新加载进程。9
(KILL
)-终止进程。15
(TERM
)-正常停止进程。
要获取所有可用信号的列表,请使用以下-l
选项调用命令:
kill -l
输出:
可以用三种不同的方式指定信号:
- 使用数字(例如
-1
或-s 1
)。 - 使用“ SIG”前缀(例如
-SIGHUP
或-s SIGHUP
)。 - 没有“ SIG”前缀(例如
-HUP
或-s HUP
)。
以下命令彼此等效:
kill -1 PID_NUMBER
kill -SIGHUP PID_NUMBER
kill -HUP PID_NUMBER
提供给kill
命令的PID 可以是以下之一:
- 如果
PID
大于零,则将信号发送到ID等于的进程PID
。 - 如果
PID
等于零,则将信号发送到当前过程组中的所有过程。换句话说,该信号将发送到属于调用kill
命令的外壳程序的GID的所有进程。使用ps -efj
命令查看进程组ID(GID)。 - 如果
PID
等于-1
,则信号以与用户调用命令相同的UID发送到所有进程。如果调用用户是root用户,则信号将发送到除init和kill
进程本身之外的所有进程。 - 如果
PID
小于-1
,则将信号发送到GID等于的绝对值的进程组eq中的所有进程PID
。
普通用户可以将信号发送到自己的进程,但不能发送信号给其他用户,而根用户可以将信号发送到其他用户的进程。
使用kill
命令终止进程
要使用kill
命令终止或终止进程,首先需要找到进程ID号(PID)。为此,您可以使用不同的命令,例如top
,ps
,pidof
和pgrep
。
假设Firefox浏览器已无响应,并且您需要终止Firefox进程。要查找浏览器的PID,请使用以下pidof
命令:
pidof firefox
该命令将打印所有Firefox进程的ID:
6263 6199 6142 6076
一旦知道了进程号,就可以通过发送TERM
信号来终止所有进程号:
kill -9 2551 2514 1963 1856 1771
您可以将上述命令组合为一个命令,而不是先搜索PID然后终止进程。
kill -9 $(pidof firefox)
使用kill
命令重新加载进程
另一个常见用例kill
是发送HUP
信号,该信号告诉进程重新加载其设置。
例如,要重新加载Nginx,您需要向主进程发送一个信号。Nginx主进程的进程ID可以在nginx.pid
文件中找到,该文件通常位于/var/run
目录中。
使用cat
命令查找主PID:
cat /var/run/nginx.pid
30251
一旦找到主PID,请输入以下内容重新加载Nginx设置:
sudo kill -1 30251
上面的命令必须以root用户或具有sudo特权的用户身份运行。
结论
该kill
命令用于向进程发送信号。最常用的信号是SIGKILL
或-9
,它终止给定的过程。
如果您有任何问题或反馈,请随时发表评论。