我正在寻找一种可靠的方法来测试postfix
bash脚本中是否正在运行。
我的第一次尝试只是尝试pidof postfix
,它不起作用。
然后我试图得到postfix status
:
POSTFIX_LOCATION=/var/packages/MailServer/target/sbin/postfix # location of postfix
result=`$POSTFIX_LOCATION status`
if [ -z $result ]; then
echo "Error: No status output from postfix"
elif [[ "$result" == *"is running"* ]]; then
echo "postfix is running!"
else echo "postfix is not running!"
fi
但是,即使将状态报告给控制台,该result
变量仍为空。这是控制台输出:
postfix/postfix-script: the Postfix mail system is running: PID: 11996
Error: No status output from postfix
我终于找到了一种方法,通过获取进程名称PID: 11996
“ master” 来测试postfix是否正在运行。所以下面做工作:
pidof master
但这不是很冗长,我不确定这是否是测试postfix
运行情况的可靠方法。
所以我的问题是:
- 如何
postfix status
从bash脚本中获取输出?-我在那里做错了吗? - 有没有更好的可靠方法来测试
postfix
bash脚本中是否正在运行?
我尝试过,
—
2015年
2>&1
但结果仍然是空的。遗憾的pgrep
是没有选择,因为它在系统(带DSM 5.1的Synology磁盘站)上不可用。
ps aux | grep [p]ostfix
?
感谢@Costas和@garethTheRed-使用
—
2015年
ps
似乎有效。在DSM系统ps
上,除以外,不接受任何其他参数w
。但是简单地呼叫ps | grep [p]ostfix
确实有效。
status
输出到stderr
?尝试添加2>&1
到status
-command。您也可以使用pgrep postfix