Назад | Перейти на главную страницу

cron.hourly job не работает

ОС: Ubuntu 16.04

Я просмотрел много разных статей и тем, но до сих пор не могу понять cron.hourly задания для автоматического запуска. Я пытаюсь создать резервную копию своей базы данных PostgreSQL. В /etc/cron.hourly, У меня есть только один сценарий с именем pg_backup. Вот разрешения на это:

-rwxr-xr-x   1 root root  1543 Oct 16 19:07 pg_backup

Если я сбегу run-parts --test /etc/cron.hourly, вывод будет следующим:

/etc/cron.hourly//pg_backup

Выглядит хорошо. Если я запустил сценарий, используя run-parts вручную, он работает должным образом и выполняет резервное копирование моей базы данных. Вот команда, которую я использую:

run-parts -v --report /etc/cron.hourly

Это здорово, но по какой-то причине он не запускается каждый час сам по себе. Я действительно не знаю, что могло быть не так. Я проверил все журналы и не нашел сообщений об ошибках.

Что мне не хватает?

ОБНОВИТЬ

Я заметил, что мой /etc/crontab файл имеет оболочку, указанную так: SHELL=/bin/sh. Мой скрипт работает в bash. Достаточно ли наличия shebang в верхней части моего скрипта для использования bash? #!/bin/bash

ОБНОВЛЕНИЕ 2

Как предложил Broco, я поместил задание в свой crontab, но оно все еще не работает. Вот что я сделал:

sudo crontab -e

Затем я добавил в файл следующее:

* * * * * root /etc/cron.hourly/pg_backup

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

Вот часть моего системного журнала. Я использовал команду grep CRON /var/log/syslog:

Oct 17 14:02:01 User CRON[63871]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:02:01 User CRON[63870]: (CRON) info (No MTA installed, discarding output)
Oct 17 14:03:01 User CRON[63917]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:03:01 User CRON[63916]: (CRON) info (No MTA installed, discarding output)
Oct 17 14:04:01 User CRON[63966]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:04:01 User CRON[63965]: (CRON) info (No MTA installed, discarding output)
Oct 17 14:05:01 User CRON[64013]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:05:01 User CRON[64012]: (CRON) info (No MTA installed, discarding output)
Oct 17 14:05:01 User CRON[64014]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Oct 17 14:06:01 User CRON[64060]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:06:01 User CRON[64059]: (CRON) info (No MTA installed, discarding output)
Oct 17 14:07:01 User CRON[64106]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:07:01 User CRON[64105]: (CRON) info (No MTA installed, discarding output)

Я понял! Как заметил Майкл Хэмптон, моя работа выполнялась, но с некоторыми ошибками. У меня не было установленного MTA, поэтому я установил postfix с участием sudo apt-get install postfix. После этого я смог посмотреть на /var/mail/root файл, чтобы увидеть сообщения об ошибках, связанных с моим cron рабочие места.

Моя основная проблема в конечном итоге была связана с отсутствием переменных среды. поскольку cron работает на root, мои переменные среды не устанавливались при запуске скрипта. Итак, я включил свой .bashrc вверху моего скрипта вот так:

source "$HOME/.bashrc"

В моем root пользователь .bashrc, Я добавил переменные среды, которые мне нужны для скрипта. Однако это все еще не сработало; переменные среды все еще не устанавливались при запуске скрипта. Чтобы исправить это, я добавил в свой сценарий следующую строку перед строкой, включающей .bashrc:

export PS1="1"

Из эта тема, эта переменная среды предотвращает .bashrc от загрузки в неинтерактивных сеансах, поэтому, когда он установлен, .bashrc загрузится.

Всем большое спасибо за помощь!

Ваша работа cron является работает, но возникла проблема.

Обычно вы должны получать электронное письмо с выводом (и ошибками!), Но вы не получаете его, потому что:

Oct 17 14:02:01 User CRON[63870]: (CRON) info (No MTA installed, discarding output)

В вашей системе не установлено ничего, что могло бы отправлять почту. Таким образом, вывод выбрасывается.

Рассматривать установка MTA так что вы можете получить результат по электронной почте, а затем узнать, что на самом деле происходит.