Я ищу надежный способ проверить, 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