检查进程是否正在运行

时间:2017-01-25 14:19:06

标签: bash command-line

我有以下bash代码检查进程是否正在运行:

button.setTitleColor(.red, for: .normal)

问题是is_running() { ps `cat "$pid_file"` > /dev/null 2>&1 } 始终评估为is_running

true包含在我运行$pid_file时未列出的进程ID。 在这种情况下,我希望ps返回is_running

如何为此目的修改它?

1 个答案:

答案 0 :(得分:3)

您缺少-p选项:

ps -p PID

bash中,我只会这样做:

is_running() { ps -p $(<"$1") &>/dev/null ;}

并将文件名作为函数的参数:

is_running /pid/file
  • 您需要开始使用较新的命令替换语法$()而不是神秘的`...`

  • bash支持速记(&>),用于指示STDOUT和STDERR的重定向