Я ищу надежный способ проверить, 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?
status
выходыstderr
? Попробуйте добавить2>&1
вstatus
-команду. Также вы можете использоватьpgrep postfix
2>&1
но результат остается пустым. К сожалению,pgrep
это не вариант, потому что он недоступен в системе (дисковая станция Synology с DSM 5.1).ps aux | grep [p]ostfix
?ps
кажется, работает. В системе DSMps
не принимает никаких параметров, кромеw
. Но простой звонокps | grep [p]ostfix
работает.Ответы:
Debian или Ubuntu
источник
Чтобы проверить, работает Postfix или нет:
Чтобы запустить Postfix:
Чтобы остановить постфикс:
источник
postfix start
без сообщения об ошибке, но когда я печатаю,postfix status
он говорит: «Почтовая система Postfix не работает». Я предполагаю, что это молча терпит неудачу.Надежный способ проверить, работает ли postfix:
Альтернатива, которая по сути делает то же самое:
аргументация
Проведя еще несколько исследований, выяснилось, что тестирование для
ps | grep [p]ostfix
вовсе не надежно, чтобы проверить, работает ли postfix.Кажется, причина, по которой
/var/packages/MailServer/target/sbin/postfix status
не выводится ничего полезного, заключается в том, что для выводаpostfix
используется внутреннийpostlog
двоичный файл. Соответствующий код можно найти в скрипте bash/var/packages/MailServer/target/libexec/postfix-script
:Проверка на код выхода из
postfix status
делает работу штрафа с другой стороны. Наpostfix-script
самом делеpostfix
двоичный файл вызывается за кулисами и не может быть вызван напрямую. Но, к счастью, скрипт также содержит код для проверкиpostfix
работоспособности:Переменная
$daemon_directory
задается вызывающимpostfix
двоичным файлом. В моей системе это разрешает до/var/packages/MailServer/target/libexec/
.источник
After doing some more research
Не могли бы вы поддержать свои требования, предоставив доказательства?