Kar*_*ahi 2 kill top process-management background-process
我在 OpenVZ VPS 上,我以非 root 用户身份创建了一个后台进程,然后取消了它,即
user@server:~$node server.js &
user@server:~$disown
Run Code Online (Sandbox Code Playgroud)
我 SSH 退出了 VPS,现在我又回来了,但我似乎无法使用其 PID 终止该进程。Pkill 1292
. 它甚至以 root 身份失败。我知道它没有死,因为当我运行top
它直到运行。此外,当我运行时,ps -l -p 1292
我可以看到该过程一直在运行。
我可以说该进程没有附加到任何终端会话,因为ps命令在 TTY 上显示一个问号,即
我如何杀死这个进程?
pkill
(像pgrep
它使用相同的接口,最初是一个 Solaris 命令,现在在许多其他类 Unix 上都可以找到,包括 Linux(procps
包))是根据进程的名称杀死进程。
pkill regexp
Run Code Online (Sandbox Code Playgroud)
杀死(发送SIGTERM
信号)到名称¹ 匹配给定正则表达式的所有进程。
所以这里pkill node
会杀死所有名称包含node
. 使用pkill -x node
(-x
如 in grep
/pgrep
表示完全匹配)杀死名称正好为 node
.
要基于 pid² 进行终止,它只是kill
(大多数 shell 中内置的命令,因此它也可以用于 shell 作业,也可以作为独立实用程序使用)。
如果kill 6806
( 的缩写kill -s TERM 6806
)失败,您可以作为最后的尝试kill -s KILL 6806
,这将非优雅地终止它。
¹进程名称是一个根据操作系统而有所不同的概念。在 Linux 上,通常最多为进程(或其最近的祖先)执行的文件的基本名称的前 15 个字节,尽管进程可能会将其更改为任意(但不超过 15 个字节)的值。另请参阅pkill -f
以匹配参数列表。
²kill
也可以根据进程组id杀死。kill -- -123
将 SIGTERM 信号发送到进程组 ID 为 123 的所有进程。当使用kill
内置 POSIX shell的作业规范(如kill %spec
)时,kill
通常也会向进程组发送信号。