Я намагався усунути багато поширених помилок,
забезпечення того, щоб PATH були доступні для cron
в кінці файлу crontab є кінцева лінія
часовий пояс встановлюється:
cd /etc cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
Бігаючи date
в баш, я отримую:
Tue Sep 17 15:14:30 SGT 2013
Для того, щоб перевірити, чи cron використовує той самий час,
* * * * * date >> date.txt
видає ту саму дату в date.txt.
Це сценарій, який я намагаюся виконати:
event.sh
:
#!/usr/bin/env bash
echo data > /root/data.txt
Використовуючи crontab -e
, рядок нижче працює,
* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
Однак, коли я спробував деякі інші аргументи, сподіваючись, що він запуститься о 14.50:
50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
або
50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)
це більше не буде працювати. Здається, є проблема з моєю годиною аргументації. У /tmp/debug.log
файлі також нічого не знайдено .
РІШЕННЯ:
Виявилося, що мені доведеться перезапустити службу cron після внесення змін до TZ.
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
* * * * * date
та підтвердити, що date
показує очікуваний час. Зверніть увагу , що установка змінної оточення TZ всередині кронтаб не може вплинути на часовий пояс , який використовується хрон демон сам по собі, але це буде впливати на процеси , запущені через хрон, так що якщо ви встановите TZ в вашому кронтаб я запропонував би коментувати це тимчасово і встановлення часу, використовуючи часовий пояс системного годинника (можливо, UTC, якщо ви однократно завантажуєте Linux, але може бути місцевий час).
~/event.sh
спробувати/home/username/event.sh