Как изменить уровень журнала cron?

Я заменил exec cron на exec cron -L 15 запустите sudo service cron reload, sudo service cron restart, но ничего не изменилось. Cron не регистрирует окончания заданий и не регистрирует неудачные задания. У меня не было проблем в Ubuntu 14.04, но теперь у меня есть эта проблема в Ubuntu 16.04. Что я делаю неправильно?

Шаг за шагом: сначала я изменил /etc/init/cron.conf:

sudo sed -i 's|exec cron$|exec cron -L15|' /etc/init/cron.conf && sudo restart cron && cat /etc/init/cron.conf

Итак, теперь это

$ cat /etc/init/cron.conf # cron - regular background program processing daemon # # cron is a standard UNIX program that runs user-specified programs at # periodic scheduled times description "regular background program processing daemon" start on runlevel [2345] stop on runlevel [!2345] expect fork respawn exec cron -L 15

Я сделал ту же конфигурацию в своем Ubuntu 16.04, а также на Ubuntu 14.04 на другом ПК.

Журнал Cron в Ubuntu 14.04 выглядит следующим образом:

$ grep CRON /var/log/syslog Aug 26 16:05:01 y1404 CRON[6825]: (y) CMD (foo # JOB_ID_1) Aug 26 16:05:01 y1404 CRON[6824]: (CRON) error (grandchild #6825 failed with exit status 127)

Итак, вы можете увидеть вторую строку с сообщением об ошибке о несуществующей команде foo. Но в Ubuntu 16.04 в журнале отсутствует уведомление об ошибке:

Aug 26 16:25:01 my CRON[7259]: (y) CMD (foo # JOB_ID_129)
1
задан 27 August 2017 в 16:03

2 ответа

Начиная с Ubuntu 15.04, upstart с использованием /etc/init/*.conf заменяется systemd с использованием файлов конфигурации в /lib/systemd/system/ и /etc/systemd/system/. Хотя файл /etc/init/cron.conf все еще существует в Ubuntu 16.04, скрипт, обычно используемый для запуска cron, теперь /lib/systemd/system/cron.service. Если вы хотите добавить дополнительные опции, отредактируйте этот файл с помощью

sudo systemctl edit --full cron

и замените строку

ExecStart=/usr/sbin/cron -f $EXTRA_OPTS

на e. g.

ExecStart=/usr/sbin/cron -L 15 -f $EXTRA_OPTS

Чтобы перезагрузить конфигурацию, запустите sudo systemctl restart cron или просто перезагрузитесь. Вы можете проверить, какая именно команда запускалась с помощью systemctl status, e. г. для cron (см. последнюю строку):

> systemctl status cron
● cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
   Active: active (running) since So 2017-08-27 09:56:18 CEST; 1h 15min ago
     Docs: man:cron(8)
 Main PID: 26021 (cron)
   CGroup: /system.slice/cron.service
           └─26021 /usr/sbin/cron -f
1
ответ дан 22 May 2018 в 19:02
  • 1
    Правильный способ редактирования /lib/systemd/system/cron.service - sudo systemctl edit --full cron. sudo systemctl daemon-reload не работает для внесения изменений. Рабочий путь systemctl restart cron.service или перезагрузка. – max5555 27 August 2017 в 19:00
  • 2
    Я отредактировал его, и теперь у нас есть хорошие инструкции для будущего использования, большое спасибо за заботу об этом! – dessert 27 August 2017 в 19:17
  • 3
    @SDsolar Это звучит разумно: обновление до 16.04 не может изменить это поведение, поэтому применяется старый подход с выскочкой. Спасибо, что добавил сюда эту информацию! – dessert 21 October 2017 в 11:43
  • 4
    Я решил внести изменения в оба места. Оказывается также, что sudo systemctl restart cron работает так же, как sudo service cron restart в этой гибридной ситуации. Вы можете смотреть его с помощью wcron, если вы создали его за askubuntu.com/questions/966194/… – SDsolar 22 October 2017 в 07:43

Начиная с Ubuntu 15.04, upstart с использованием /etc/init/*.conf заменяется systemd с использованием файлов конфигурации в /lib/systemd/system/ и /etc/systemd/system/. Хотя файл /etc/init/cron.conf все еще существует в Ubuntu 16.04, скрипт, обычно используемый для запуска cron, теперь /lib/systemd/system/cron.service. Если вы хотите добавить дополнительные опции, отредактируйте этот файл с помощью

sudo systemctl edit --full cron

и замените строку

ExecStart=/usr/sbin/cron -f $EXTRA_OPTS

на e. g.

ExecStart=/usr/sbin/cron -L 15 -f $EXTRA_OPTS

Чтобы перезагрузить конфигурацию, запустите sudo systemctl restart cron или просто перезагрузитесь. Вы можете проверить, какая именно команда запускалась с помощью systemctl status, e. г. для cron (см. последнюю строку):

> systemctl status cron ● cron.service - Regular background program processing daemon Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled) Active: active (running) since So 2017-08-27 09:56:18 CEST; 1h 15min ago Docs: man:cron(8) Main PID: 26021 (cron) CGroup: /system.slice/cron.service └─26021 /usr/sbin/cron -f
1
ответ дан 18 July 2018 в 07:53

Другие вопросы по тегам:

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