通过pid文件杀死进程

时间:2014-09-29 19:09:06

标签: linux

我尝试通过pid文件终止进程:

kill -9 $(cat /var/run/myProcess.pid)

pid文件包含进程号。但是执行kill不会给我带来任何标准输出并且进程仍然存在。但这有效:

kill -9 PID

第一个kill命令有什么问题?它是否无法从文件中提取PID?

pid文件的示例内容:

5424

kill -9 5424

作品。

4 个答案:

答案 0 :(得分:61)

我相信你遇到了这个问题,因为你的默认shell是dash(debian almquist shell),但你使用的是bash语法。您可以使用类似

之类的内容在shebang行中指定bash
#!/usr/bin/env bash

或者,您可以在评论

中使用admdrew建议的破折号和bash兼容后退表达式
kill -9 `cat /var/run/myProcess.pid`

无论如何,你不能依赖/bin/sh作为bash。

答案 1 :(得分:40)

在某些情况下,更紧凑:

pkill -F /var/run/myProcess.pid

是要走的路。我对这些品种遇到了麻烦:

kill $(cat /var/run/myProcess.pid)
# Or
kill `cat /var/run/myProcess.pid`

当我不得不将命令放入可能使用不同规则解析它的其他内容时,如Monit对其启动/停止命令执行的操作。

答案 2 :(得分:1)

cat /var/run/myProcess.pid | sudo xargs kill -9

答案 3 :(得分:0)

方法很简单。

fuser -k /path/filename

示例假设您想在 linux 中杀死 apt 锁定文件。

sudo fuser -k /var/lib/dpkg/lock

它会杀死保存文件的进程。