在Linux中kill命令
Linux是一个很棒的高级操作系统,但是还不完美。有时,某些应用程序可能会开始出现异常行为,并变得无响应或开始消耗大量系统资源。无法响应的应用程序无法重新启动,因为原始应用程序进程永远不会完全关闭。唯一的解决方案是重新启动系统或终止应用程序进程。
有几种命令可让您终止错误的进程,我们最常使用的是kill
。在本教程中我们将说明如何使用kill命令。
kill
命令
kill
是内置在大多数Bourne衍生shell(例如Bash和Zsh)中的shell。 Shell和独立的/bin/kill
可执行文件之间的命令行为略有不同。
使用 type
命令显示系统中包含kill
的所有位置:
type -a kill
kill is a shell builtinkill is /bin/kill
上面的输出表明,内置的shell优先于独立的可执行文件,并且在您键入kill
时使用。如果要使用二进制文件,请键入文件的完整路径/bin/kill
。在本文中,我们将使用内置Bash的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
命令的PID可以是以下之一:
- 如果
PID
大于零,则将信号发送到ID等于PID
的进程。 - 如果
PID
等于零,则发送信号到当前进程组中的所有流程。换句话说,信号被发送到属于调用kill
命令的Shell的GID的所有进程。使用ps -efj
命令查看进程组ID(GID)。 - 如果
PID
等于-1
,则信号以与用户调用命令相同的UID发送到所有进程。如果调用用户是root用户,则将信号发送到除init和kill
进程本身之外的所有进程。 - 如果
PID
小于-1
,则将信号发送给该进程中的所有进程GID等于PID
的绝对值的进程组。
普通用户可以向自己的进程发送信号,但不能向属于其他用户的进程发送信号,而root根用户可以向其他用户的进程发送信号。
使用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
,它会终止给定的进程。
如果您有任何问题或反馈,请随时发表评论。
以上是 在Linux中kill命令 的全部内容, 来源链接: utcz.com/z/507431.html