Проблема сценария оболочки при добавлении к крону

Работа - это многозадачность и использует виртуальную память и, следовательно, использовать своп. Например, этот вопрос Linux зачем использовать своп, когда в RAM более чем достаточно свободного места в RAM? и этот вопрос OSX Почему я отключил файл свопа в Mac OS X?

Да, большинство Операционные системы создадут своп во время установки по умолчанию.

Да, большинство операционных систем предупреждают вас / Йелл, если вы попытаетесь настроить систему без обмена (обычно настаивая на создании даже крошечного).

См. Debian , Red Hat 7 , Windows (64бит) .

-1
13.04.2017, 15:36
2 ответа

По умолчанию CRON проходит команды с очень ограниченным Путьм , который не будет включать в себя команду Service . Это может быть то, что генерирует ненулевой код возврата, который приводит к отправке электронной почты.

Если не указано иное в файле Crontab , командам выполняется под путь:

PATH=/usr/bin:/bin

напротив, служба обычно в usr / sbin Нет в пути по умолчанию :

# type service
service is /usr/sbin/service

В

# type service
service is /usr/sbin/service

есть два общих решения:

  1. предоставляют действие Путь , которое содержит то, что вам нужно рядом с верхней частью вашего Crontab или ваш скрипт.

  2. Укажите все пути явно.

Первый удобнее. Последнее считается более безопасным.

Как отладить команду crontab

в системе с системой электронной почты скверлевой электронной почты, Cron отправляет электронное письмо, содержащее вывод скрипта к пользователю всякий раз, когда появляется ошибка в задании CRON. Не все системы, однако, хорошо настроены электронная почта. CRON также отправит уведомления об ошибках к регистратеру, но что делает регистратор с ними, зависит от конфигурации регистратора, которая может быть непрозрачной.

В этих случаях попробуйте собрать все сообщения об ошибках самостоятельно, когда команда CRON работает, но изменяя строку Crontab. Используйте что-то вроде:

1 2 * * *  /path/to/myscript >>/tmp/myscript.log 2>&1

Это перенаправляет как Stdout, так и STDERR в файл журнала /tmp/myscript.log . После выполнения команд проверяйте этот файл журнала.

3
28.01.2020, 05:09

Вы можете перенаправить вывод на / dev / null , как следующее (я делаю это для моих приложений Thunderbird):

30 05 * * * / usr / bin / thunderbird> / dev / bin / thunderbird> / dev / bin / thunderbird> / dev / bin / thunderbird> / dev / bin / thunderbird> / dev / null 2> & 1

или перенаправить его к файлу с помощью >> Операции, которые означает добавление:

30 05 * * * / usr / bin / thunderbird >> / tmp / mycron.log 2 > & 1

Примечание: Вы можете использовать полный путь файла сервисного обслуживания (например, статус /etc/init.d/networkmanager ) вместо Service NetworkManager Status .

Рекомендация:
Лучше просмотреть ваше программное обеспечение с комбинацией PIDOF и команд PS -P , потому что файлы сервисов проведут файл PID под / var / каталог Run / и если ваша программа была неожиданной была убита (например, сигнал 9) Это файл PID будет существовать! Однако смарт-сервисные файлы проведут эту ситуацию в состояния функции.

Например:

while :; do
       pid=$(pidof SOFTWARE)
       watch=$(ps -p ${pid} >/dev/null 2>&1 && echo $?)
       [[ ${watch} -ne 0 ]] && service SOFTWARE restart
       sleep 3
done
-1
28.01.2020, 05:09

Теги

Похожие вопросы