我想解析 ps 命令的输出,并在找到程序时返回 true 或 false。这里有人会怎么做?我可以访问命令行,因此它对我来说是开放的,没有任何限制。
答案1
通过管道将输出传输至grep
。
ps -ax | grep process_name | grep -v grep
上面的方法更适合手动检查内容。如果你想在脚本中使用某些内容,请使用以下返回值pidof
:
pidof process_name
如果存在具有指定名称的进程则返回 0,否则返回 1。
答案2
使用程序包,如pgrep pattern
。
答案3
一般情况下,您应该在进程列表中查找特定的进程,而不是恰好具有相同名称的进程。
我们之前曾被错误所困扰,其中出现具有相同(或相似)名称的进程并破坏某些东西(通常是监视器或启动/停止脚本,因此通常并不重要)。
您的进程应该在启动时(或之前,通过让 shell 脚本写入其 pid 然后执行您的任务)写入一个 pid 文件,然后您可以在后续的 shell 脚本中引用该 pid 文件的内容。
要检查特定的 pid 是否正在运行,请使用“信号 0”将其终止 - 这实际上并不发送信号,只是检查它是否存在。
答案4
使用 if pgrep APPLICATION > /dev/null
then dox; fi