共计 1385 个字符,预计需要花费 4 分钟才能阅读完成。
导读 | 如果进程在前台运行, 你可以使用 Ctrl+C 终端快捷方式。但是, 如果进程不可见 (在后台运行), 你可以使用专用命令杀死它。 |
终止进程是指在执行过程中停止进程。如果你知道进程 ID(PID),则可以使用 kill 命令,如下所示:
> kill <signal> <PID>
在上面的语法中,signal 指的是要发送终止的终止信号,并且 PID 指的是进程的 ID。
还有一个 killall 命令,我将在本文中讨论 kill 和 killall 命令。
当一个进程被操作系统或用户终止时,即进程没有自行完成, 它会被发送一个终端信号。
你还需要了解要终止的进程的详细信息。使用 kill 命令, 你必须提供进程的 ID(PID)。你可以从进程名称中获取 PID
> pidof exact_process_name
比如获取 java 进程的进程号
> pidof java
8075 1032
该 kill 命令要求你知道要终止的进程的 ID,以及可选的终止信号。
要简单地终止命令,请使用以下语法:
kill [signal]
向 PID 发送终止信号是可选的,如果未提供任何信号,则 kill 默认发送 SIGTERM (15),以正常终止所述进程结束。
我启动了 sleep 命令的后台进程(它给了我一个 PID)。我们使用 kill 命令杀死它。
杀死这个特定的实例 sleep 如下所示:
$ sleep 120 &
[1] 125686
$ kill 125686
[1] + terminated sleep 120
如果我想使用终止信号,我可以使用数值或信号本身:
$ sleep 120 &
[1] 125746
$ kill -SIGKILL 125746
[1] + killed sleep 120
$ sleep 120 &
[1] 125759
$ kill -9 125759
[1] + killed sleep 120
如果 kill 命令没有指定信号,则默认使用 SIGTERM (15)。
如果不知道某个进程的 PID 是多少,或者该进程有多个子进程,又想一次性杀死子进程和父进程,可以使用 killall 命令。
killall [signal]
与 kill 命令类似,指定终止信号是可选的。当没有指定终止信号时,killall 将发送 SIGTERM (15) 以优雅地关闭所述进程。
为了演示 killall 的使用,我将杀死两个正在运行的 sleep 命令。
$ sleep 120 &
[1] 112351
$ sleep 2000 &
[2] 112362
$ killall sleep
[1]- Terminated sleep 120
[2]+ Terminated sleep 2000
此外,你可以使用该 - e 标志来查找进程名称的完全匹配。
命令的替代命令 kill 是 pkill 命令。它是 pgrep 和 kill 命令的组合。
killall 杀死所有具有匹配名称的进程。另一方面,pkill 使用模式匹配来匹配进程并杀死它们。
pkill [options] pattern
命令中可用的一些有用选项 pkill 如下:
- -u: 特定所有者拥有的进程
- -x: 完全匹配模式的进程
- -signal: 指定终止信号(默认为 SIGTERM)
结束 nginx 进程
> pkill nginx