Linux是一个伟大和先进的操作系统,但是它不是完美的,一段时间后,一些应用程序可能开始运行不正常,无法响应或开始消耗大量系统资源,无法响应的应用程序无法重新启动,因为进程永远不会完全关闭。唯一的解决方案是重新启动系统或终止应用程序进程。
有几个程序允许你终止错误进程,其中kill是最常用的。
kill 命令
使用type命令显示系统上包含kill的所有位置:type -a killkill is a shell builtin
kill is /bin/kill
上面的输出告诉shell内置的优先级高于独立可执行文件,每当键入kill时都会使用它,如果要使用二进制文件,请键入文件/bin/kill的完整路径,在本文中,使用Bash内置,
kill命令的语法采用以下格式:kill [OPTIONS] [PID]...
kill命令向指定的进程或进程组发送信号,使它们根据信号操作,未指定信号时,它默认为-15 ( -术语),
最常用的信号是:1 ( HUP ) C#重新加载进程9 ( kill ) C#杀死进程15 ( TERM ) C#正常停止进程
要获取所有可用信号的列表,请使用-l选项调用该命令:kill -l> > >
可以通过三种不同的方式指定信号:使用数字( -1或-s 1 )使用" SIG" 前缀( -SIGHUP或-s SIGHUP )没有" SIG" 前缀( e,g,-HUP或-s HUP )
以下命令彼此等效:kill -1 PID_NUMBERkill -SIGHUP PID_NUMBERkill -HUP PID_NUMBER
提供给kill命令的PID可以为下列值之一:如果PID大于零,就将信号发送到ID等于PID的进程如果PID等于零,就信号将发送到当前进程组中的所有进程,换句话说,信号被发送到所有属于调用shell的GID的进程kill命令,使用ps -efj命令查看进程组ID ( ID )如果PID等于-1,就将信号发送到与调用命令的用户有相同UID的所有进程,如果调用用户为root,就信号将发送到除init和kill进程本身之外的所有进程如果PID小于-1,则向进程组eq中所有进程发送信号,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.pid30251
找到主PID后,键入以下命令重新加载Nginx设置:sudo kill -1 30251
上面的命令必须以root用户或具有sudo特权的用户身份运行。
结束语
kill命令用于向进程发送信号,最常用的信号是SIGKILL或-9,它终止给定进程。
如果你有问题或反馈,请留下评论。