Как прочитать статус службы в скрипте bash

Как прочитать статус службы в скрипте bash

Я написал скрипт для мониторинга определенной службы на моем VPS. Эта служба (clamd.amavisd) имеет тенденцию неожиданно отключаться, и когда это происходит, моя служба электронной почты фактически останавливается.

Я использую следующую инструкцию в скрипте:

STATUS_QUERY_RESULT_STRING=$(service $SERVICE_NAME status)

Проблема в том, что при запуске из терминала скрипт получает что-то в эту переменную (я сохранил это в файл, чтобы знать), но, к сожалению для меня, при запуске в задании cron переменная оказывается пустой.

Очевидно, что я делаю что-то не так. Есть ли какой-то фактор, который я не учитываю?

решение1

АБСОЛЮТНО все, что вы запускаете, cronдолжно иметь абсолютные пути, поскольку cronиспользуется минимальная часть переменных окружения

   STATUS_QUERY_RESULT_STRING=$(/full/path/to/service $SERVICE_NAME status)

На самом деле вы можете задать в своем скрипте самые важные пути, которые вам нужны.

   PATH=/bin:/usr/local/sbin 

но если вы не хотите в один прекрасный день обнаружить, что, например, ожидаемый файл lsна самом деле является вредоносным хакерским дропом, то всегда используйте абсолютные пути

Укажите в начале вашего сценария, что вы готовы использовать что-то подобное.

   CAT='/bin/cat'
   LS='/bin/ls'

и использовать его как

  $LS -la /some/path
  $CAT /etc/passwd

Связанный контент