Проверьте, работает ли постфикс

Я ищу надежный способ проверить, работает ли postfix из сценария bash.

Моя первая попытка – просто попробовать pidof postfix , который не работает.

  • Почему знак «меньше» не работает в качестве замены кошки в bash?
  • Как я могу проверить заряд Apple iPod Shuffle?
  • Как получить предложения по автоматическому пакету в командной строке?
  • Извлечь определенную подстроку из имени файла
  • Как узнать, поддерживает ли моя беспроводная карта 5ghz?
  • Для каких функций ядра Linux требуется os-prober для установки Windows 8?
  • Затем я попытался получить 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 , который является «мастером». Так работает следующее:

     pidof master 

    Но это не очень многословно, и я не уверен, что это надежный способ проверить, работает ли postfix .

    Поэтому мои вопросы:

    • Как я могу получить вывод postfix status из сценария bash? – Что-нибудь я там делаю неправильно?
    • Есть ли более надежный способ проверить, работает ли postfix из сценария bash?

  • Проблема с оборудованием после установки новой версии Linux Mint
  • Почему большинство обычных менеджеров пакетов Linux не позволяют устанавливать пакет для обычных пользователей?
  • Bash - ненулевые аргументы для оператора (массив)
  • Где задана переменная окружения TERM по умолчанию?
  • Почему grep ищет больше, чем файлы, которые я хочу со звездочкой?
  • Арифметические операции с expr и переменными
  • 3 Solutions collect form web for “Проверьте, работает ли постфикс”

    Debian или Ubuntu

     sudo service postfix status 

    Надежный способ проверить, работает ли постфикс:

     if /var/packages/MailServer/target/sbin/postfix status; then echo "postfix is running!" else echo "postfix is not running!" fi 

    Альтернатива, которая по существу делает то же самое:

     if /var/packages/MailServer/target/libexec/master -t 2>/dev/null; then echo "postfix is not running!" else echo "postfix is running!" fi 

    аргументация

    Проведя еще несколько исследований, выяснилось, что тестирование для ps | grep [p]ostfix ps | grep [p]ostfix вообще не является надежным, чтобы проверить, работает ли постфикс.

    Похоже, причина, почему /var/packages/MailServer/target/sbin/postfix status не выводит ничего полезного, потому что postfix использует внутренний postlog файл postlog для вывода. Соответствующий код можно найти в сценарии bash /var/packages/MailServer/target/libexec/postfix-script :

     LOGGER="$command_directory/postlog -t $MAIL_LOGTAG/postfix-script" INFO="$LOGGER -p info" 

    С другой стороны, проверка кода выхода из postfix status работает нормально. postfix-script фактически вызывается за кулисами по двоичным сообщениям postfix и не может быть вызван напрямую. Но, к счастью, сценарий также включает в себя код для проверки, работает ли postfix :

     status) $daemon_directory/master -t 2>/dev/null && { $INFO the Postfix mail system is not running exit 1 } $INFO the Postfix mail system is running: PID: `sed 1q pid/master.pid` exit 0 ;; 

    Переменная $daemon_directory устанавливается $daemon_directory вызывающего postfix . В моей системе он разрешает /var/packages/MailServer/target/libexec/ .

    Чтобы проверить, работает ли Postfix, нет:

     sudo /etc/init.d/postfix status 

    Чтобы запустить Postfix:

     sudo /etc/init.d/postfix start 

    Чтобы остановить постфикс:

     sudo /etc/init.d/postfix stop 

    Надеюсь, это поможет.

    Linux и Unix - лучшая ОС в мире.