我可以使用什么 Linux 命令来验证某个东西是否存在于进程列表中?

我可以使用什么 Linux 命令来验证某个东西是否存在于进程列表中?

我想解析 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/nullthen dox; fi

相关内容