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
「マスター」であるのプロセス名を取得することで、Postfixが実行されているかどうかをテストする方法をようやく見つけました。したがって、以下は機能します:
pidof master
しかし、これはそれほど冗長ではなく、postfix
実行中かどうかをテストするための信頼できる方法であるかどうかはわかりません。
だから私の質問は:
postfix status
bashスクリプト内からの出力を取得するにはどうすればよいですか?-私がそこで間違っていることはありますか?- がbashスクリプト内から実行されているかどうかをテストするためのより信頼できる方法はあり
postfix
ますか?
2>&1
が、結果は空のままです。pgrep
システム(DSM 5.1を搭載したSynologyディスクステーション)では使用できないため、残念ながらオプションはありません。
ps aux | grep [p]ostfix
?
ps
はうまくいくようです。DSMシステムでps
は、それ以外のパラメーターは受け入れませんw
。しかし、単に呼び出すだけで十分ps | grep [p]ostfix
です。
status
出力stderr
?-command に追加2>&1
してみてくださいstatus
。また、次のものを使用できますpgrep postfix