Коротка відповідь: Редагуйте розклад через crontab -e. Кожен рядок — п'ять часових полів плюс команда, наприклад 0 3 * * * /usr/local/bin/backup.sh запускається щодня о 03:00. Завжди використовуйте абсолютні шляхи, а коли завдання не спрацьовує — дивіться journalctl чи syslog.

Огляд

Cron — стандартний планувальник Linux для повторюваних задач: бекапи, поновлення сертифікатів, воркери черг, чистки. Кожен користувач має власний crontab; системні завдання живуть у /etc/cron.d/ та /etc/cron.{daily,hourly}.

Що потрібно мати

  • SSH-доступ від користувача, який має виконувати задачу.
  • Задачу, попередньо перевірену вручну з оболонки.

Покрокова інструкція

  1. Відкрийте свій crontab:
    crontab -e
  2. Додайте рядок розкладу — поля: хвилина, година, день місяця, місяць, день тижня:
    # 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
  3. Збережіть і перевірте: crontab -l.
  4. Під час тестування захоплюйте вивід, дописавши:
    0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
  5. Запобігайте накладанню довгих завдань через 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 →

Ця відповідь Вам допомогла? 0 Користувачі, які знайшли це корисним (0 Голосів)