在Linux中杀死命令
Linux是一个很棒的高级操作系统,但并不是完美的。 有时,某些应用程序可能会开始出现异常行为,并变得无响应或开始消耗大量系统资源。 无法响应的应用程序无法重新启动,因为原始应用程序进程永远不会完全关闭。 唯一的解决方案是重新启动系统或终止应用程序进程。
有几种实用程序可以让您终止错误的进程 kill
是最常用的。
kill
命令#
kill
是大多数Bourne衍生的shell(例如Bash和Zsh)中内置的shell。 在外壳程序和独立程序之间,命令行为略有不同 /bin/kill
可执行文件。
使用 type
命令显示系统上所有包含以下内容的位置 kill
:
type -a kill
kill is a shell builtin
kill is /bin/kill
上面的输出表明内置的Shell优先于独立的可执行文件,并且在您键入任何内容时都会使用它 kill
。 如果要使用二进制文件,请键入文件的完整路径 /bin/kill
。 在本文中,我们将使用内置的Bash。
的语法 kill
命令采用以下形式:
kill [OPTIONS] [PID]...
的 kill
命令将信号发送到指定的进程或进程组,使它们根据该信号进行操作。 未指定信号时,默认为 -15
(-术语)。
最常用的信号是:
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
大于零,则将信号发送到ID等于PID
。 - 如果
PID
等于零,信号将发送到当前进程组中的所有进程。 换句话说,该信号被发送到属于该外壳程序的GID的所有进程,该外壳程序调用了kill
命令。 使用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 6263 6199 6142 6076
您可以将上述命令组合为一个命令,而不是先搜索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
,这将终止给定的进程。
如果您有任何疑问或反馈,请随时发表评论。
杀死终端