通过pid文件杀死进程

Upv*_*ote 48 linux

我试图通过pid文件杀死进程:

kill -9 $(cat /var/run/myProcess.pid)
Run Code Online (Sandbox Code Playgroud)

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

kill -9 PID
Run Code Online (Sandbox Code Playgroud)

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

pid文件的示例内容:

5424
Run Code Online (Sandbox Code Playgroud)

kill -9 5424
Run Code Online (Sandbox Code Playgroud)

作品.

Ell*_*sch 67

我相信你遇到这个,因为你的默认shell是破折号(debian almquist shell),但你使用的是bash语法.您可以在shebang行中指定bash,例如,

#!/usr/bin/env bash
Run Code Online (Sandbox Code Playgroud)

或者,您可以在评论中使用admdrew建议的破折号和bash兼容的反向刻度表达式

kill -9 `cat /var/run/myProcess.pid`
Run Code Online (Sandbox Code Playgroud)

无论如何,你不能依赖于/bin/shbash.


jet*_*eon 46

在某些情况下,更紧凑:

pkill -F /var/run/myProcess.pid
Run Code Online (Sandbox Code Playgroud)

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

kill $(cat /var/run/myProcess.pid)
# Or
kill `cat /var/run/myProcess.pid`
Run Code Online (Sandbox Code Playgroud)

当我不得不将命令放入其他可能使用不同规则解析它的东西时,就像Monit为其启动/停止命令所做的那样.