繁体   English   中英

通过pid文件杀死进程

[英]Kill process by pid file

我尝试通过 pid 文件杀死一个进程:

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

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

kill -9 PID

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

pid 文件的示例内容:

5424

kill -9 5424

作品。

我相信您遇到这种情况是因为您的默认 shell 是dash (debian almquist shell),但您使用的是 bash 语法。 您可以在 shebang 行中使用类似的内容指定 bash,

#!/usr/bin/env bash

或者,您可以在注释中使用admdrew建议的与破折号和 bash 兼容的反引号表达式

kill -9 `cat /var/run/myProcess.pid`

无论如何,您不能依赖/bin/sh成为 bash。

在某些情况下,更紧凑:

pkill -F /var/run/myProcess.pid

是要走的路。 我在品种方面遇到了麻烦:

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

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

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

有一个非常简单的方法。

fuser -k /path/filename

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM