Я намагався налаштувати завдання root root, щоб запустити Bash-скрипт як root, запускати в хвилині 7,37, щогодини, щодня місяця, кожного місяця. Цей скрипт розміщений у /usr/bin
імені tunlrupdate.sh
. Він оновлює DNS Tunlr.
$ ls -l /usr/bin/tunlrupdate.sh
-rwxr-xr-x 1 root root 2133 Sep 24 15:42 /usr/bin/tunlrupdate.sh
Цей сценарій Bash доступний тут .
Після виклику сценарію записує те, що відбувається в журналі, що знаходиться в /var/log/tunlr.log
Щоб додати цю роботу з кореневим cron, я використав стандарт для crontab root
sudo crontab -e
І вставили ці 2 рядки в кінці. Я очікую, що cron запустить скрипт як root.
# check for updated Tunlr DNS every 30 minutes at the hour + 7 mn and hour + 37 mn
07,37 * * * * root /usr/bin/tunlrupdate.sh
Пізніша команда sudo crontab -l
підтвердила, що завдання cron було вставлено.
Я перезавантажив Ubuntu і перевіряв у файлі журналу, чи завдання Cron було запущено належним чином. Однак у лог-файлі немає нічого, що /var/log/tunlr.log
означає, що завдання ніколи не було успішно запущено.
Я перевірив, чи запускаю скрипт із командного рядка
sudo /usr/bin/tunlrupdate.sh
тоді файл журналу оновлюється відповідно.
Чому ця робота з хронів не працює так, як планувалося в моїй системі?
ОНОВЛЕННЯ 1: Усі запропоновані рішення поки що не спрацьовують. Дякую Оллі за CLI, який перелічив системний журнал sudo grep CRON /var/log/syslog
. Однак я отримав помилку CRON
CRON[13092]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ]
&& find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php
/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
із запропонованим PATH = вставкою та використанням абсолютного шляху від root для функцій у сценарії або без цього запропонованого рішення тут. Я все одно отримую цю помилку.
Після деякого пошуку я визначив помилку у файлі, /usr/lib/php5/maxlifetime
як це пояснено тут :Change #!/bin/sh -e --> #!/bin/sh -x
Потім перерахування журналу помилок CRON у моїй системі
sudo grep CRON /var/log/syslog
Feb 11 18:07:01 Marius-PC CRON[14067]: (root) CMD (root /usr/bin/tunlrupdate.sh)
Feb 11 18:07:01 Marius-PC CRON[14066]: (root) MAIL (mailed 1 byte of output; but got
status 0x00ff, #012)
Я досі не отримую сценарій bash. Цього разу у журналі не відображається помилок. Щоб переконатися, що це не зміст сценарію, я зменшив сценарій до наступних 3 рядків:
#!/bin/bash
LOGFILE=/var/log/tunlr.log
echo $LOGFILE >> $LOGFILE
Я до сих пір не отримую роботу з кроном. У файлі журналу нічого не записано. Так навіть пустий сценарій не буде працювати в cron? Я не розумію. Мені відомо, що спробую сценарій, зведений до цих двох рядків:
#!/bin/bash
exit 0
І все той же журнал помилок. Сценарій cron не проходить ...