【问题标题】:Linux bash pidof command wont workLinux bash pidof 命令不起作用
【发布时间】:2012-09-25 23:25:36
【问题描述】:

这是一个我无法弄清楚的小错误。当我输入pidof 命令关闭进程时,命令行只是执行 pidof 并转到下一行,没有任何反应。没有错误信息,什么都没有。

例子:

pidof supervisord

【问题讨论】:

  • 您可能需要killallpgrep

标签: linux pid webfaction


【解决方案1】:

当 pidof 没有找到该名称的任何进程时,这是 pidof 的预期行为。

另外,它不会杀死进程,只是返回它的进程 ID。您想使用“killall”来实际杀死一个进程,或者结合使用“pidof”来获取 PID,并使用“kill”来杀死该 PID。

killall supervisord

或者

kill $(pidof supervisord)

【讨论】:

  • 但是supervisord在调用命令的目录中,我该如何调试呢?
  • 看起来 supervisord 是一个进程,如果它们崩溃,它只会重新启动 python 脚本/二进制文件。您可能想要停止由 supervisord 启动的脚本,而不是 supervisord 本身?我们需要更多关于你想要做什么的信息。
  • @Lucas - pidof、kill 和 killall 作用于正在运行的进程,而不是文件。当您运行这三个命令之一时,supervisord 位于哪个目录或您位于哪个目录都无关紧要。
  • 我只是想像斯蒂芬所说的那样区分进程和文件。所以 supervisord 是一个启动进程的文件,我怎样才能找到进程的名称以便我的 pidof 对其进行处理?
  • supervisord 的全部目的是启动其他应用程序,因此可以将其配置为启动任何您的情况。如果 supervisord 仍在运行,您可以让子进程类似于“pstree $(pidof supervisord)”。但是,我假设你已经杀死了 supervisord,所以我真的没有办法弄清楚它启动了什么(除了查看 supervisord 配置)。
【解决方案2】:

Pidof查看进程列表的方式如下

root       526  0.9  0.0  56556 11788 ?        Ss   Sep19  89:39 /usr/bin/python 
/usr/bin/supervisord

所以,

 # pidof python  
 526

【讨论】:

  • 这是否意味着 pidof supervisord 如果启动 python 将不会返回任何内容?
【解决方案3】:

试试

pgrep -f "supervisord"

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2018-02-20
    • 1970-01-01
    相关资源
    最近更新 更多