我有以下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
。
如何为此目的修改它?
答案 0 :(得分:3)
您缺少-p
选项:
ps -p PID
在bash
中,我只会这样做:
is_running() { ps -p $(<"$1") &>/dev/null ;}
并将文件名作为函数的参数:
is_running /pid/file
您需要开始使用较新的命令替换语法$()
而不是神秘的`...`
bash
支持速记(&>
),用于指示STDOUT和STDERR的重定向