Я ищу надежный способ проверить, 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
Наконец-то я нашел способ проверить, работает ли postfix, получив имя процесса PID: 11996
«master». Так в дальнейшем делает работу:
pidof master
Но это не очень многословно, и я не уверен, что это надежный способ проверить, postfix
работает ли он.
Итак, мои вопросы:
- Как я могу получить вывод из
postfix status
скрипта bash? - Что-то я не так делаю там? - Есть ли лучший надежный способ проверить,
postfix
работает ли внутри скрипта bash?
2>&1
но результат остается пустым. К сожалению, pgrep
это не вариант, потому что он недоступен в системе (дисковая станция Synology с DSM 5.1).
ps aux | grep [p]ostfix
?
ps
кажется, работает. В системе DSM ps
не принимает никаких параметров, кроме w
. Но простой звонок ps | grep [p]ostfix
работает.
status
выходыstderr
? Попробуйте добавить2>&1
вstatus
-команду. Также вы можете использоватьpgrep postfix