【问题标题】:How to get to know whether the Linux process is running如何知道Linux进程是否正在运行
【发布时间】:2012-07-17 06:44:13
【问题描述】:

给定一个pid,比如29264,如何知道进程是否在运行?

有什么简单的方法吗?

谢谢

【问题讨论】:

  • 注意:通常 PID 不足以检查特定进程是否仍在运行。如果一个进程退出,它的 PID 可以被其他进程重用,所以这通常不是一个安全的假设。如果您没有生成许多同名进程,则还可能涉及检查进程名称。但最好的方法是通过锁定文件。但这一切都取决于您要做什么。
  • @MichałGórny 感谢您的建议
  • 让我补充一点:除非你看的进程是一个子进程,有几个陷阱。详情请见this comment

标签: linux bash


【解决方案1】:

进程状态 (ps) 提供您正在寻找的信息:

ps -p 29264

进程运行时的输出(在我的 Mac 上的快速示例,在 Linux 上的工作方式相同):

PID     TIME       CMD
127     4:54.03    /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder

否则:

PID     TIME       CMD

【讨论】:

  • 请注意,在 Linux 上,这样的 ps 调用也会列出 TTY。您不应尝试依赖任何特定字段。
【解决方案2】:

kill -0 29264,并检查错误(如果有)

link to online linux (man 2) manual

link to online linux (man 1) manual

【讨论】:

  • 请问kill -0 <pid>是什么意思,因为kill -l不提供信号?
  • 来自 The Fine Manual:“特别有用的信号包括 HUP、INT、KILL、STOP、CONT 和 0。” kill -0 的含义是:执行发送信号的所有必要步骤,但不向进程传递任何实际信号。但错误报告与正常信号相同。另见man 2 kill
  • 您能否提供该指令的链接?
【解决方案3】:

获取进程状态:

ps -p 29264 > /dev/null; echo $?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多