Коротка відповідь: Редагуйте розклад через crontab -e. Кожен рядок — п'ять часових полів плюс команда, наприклад 0 3 * * * /usr/local/bin/backup.sh запускається щодня о 03:00. Завжди використовуйте абсолютні шляхи, а коли завдання не спрацьовує — дивіться journalctl чи syslog.
Огляд
Cron — стандартний планувальник Linux для повторюваних задач: бекапи, поновлення сертифікатів, воркери черг, чистки. Кожен користувач має власний crontab; системні завдання живуть у /etc/cron.d/ та /etc/cron.{daily,hourly}.
Що потрібно мати
- SSH-доступ від користувача, який має виконувати задачу.
- Задачу, попередньо перевірену вручну з оболонки.
Покрокова інструкція
- Відкрийте свій crontab:
crontab -e - Додайте рядок розкладу — поля: хвилина, година, день місяця, місяць, день тижня:
# m h dom mon dow command 0 3 * * * /usr/local/bin/backup.sh */5 * * * * /home/user/.venv/bin/python /home/user/check.py 0 0 * * 0 certbot renew --quiet - Збережіть і перевірте:
crontab -l. - Під час тестування захоплюйте вивід, дописавши:
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1 - Запобігайте накладанню довгих завдань через
flock:*/10 * * * * flock -n /tmp/job.lock /usr/local/bin/job.sh
Типові проблеми
- Скрипт працює в оболонці, але не в cron: PATH у cron мінімальний — використовуйте абсолютні шляхи для кожного бінарника або задайте
PATH=на початку crontab. - Здається, нічого не запускається: перевірте
grep CRON /var/log/syslog(Debian-сімейство) чиjournalctl -u crond(RHEL-сімейство). - Не той час: cron використовує часовий пояс сервера — див. як його задати.
%у командах: знак відсотка в crontab особливий — екрануйте як\%.
Коли звертатися в підтримку
Налаштування cron на некерованому сервері — ваше; якщо заплановані задачі зупиняються через збій самого сервера, відкрийте тикет.
Часті запитання
Чому скрипт працює в оболонці, але не в cron?
Cron запускається з мінімальним оточенням і PATH. Використовуйте абсолютні шляхи для кожної команди й файлу в завданні або явно задайте PATH на початку свого crontab.
Як побачити, чи справді запускалося моє cron-завдання?
Перевірте «grep CRON /var/log/syslog» у Debian-сімействі чи «journalctl -u crond» у RHEL-сімействі та допишіть до команди перенаправлення виводу в лог-файл, щоб бачити її власний вивід.
Як уникнути накладання запусків довгого завдання?
Обгорніть команду у flock, наприклад «flock -n /tmp/job.lock /path/to/job.sh» — наступний запланований запуск одразу завершиться, якщо попередній ще триває.
Схожі статті
Потрібна допомога? Звернутися в підтримку Cloud2Y →
