Как настроить запуск скрипта по расписанию в Linux

Ответ

Для автоматизации задач в Linux я использую cron — стандартный планировщик заданий.

Основные шаги:

  1. Отредактировать файл crontab для пользователя:
    crontab -e
  2. Добавить строку, определяющую расписание и команду. Формат:
    # минута час день_месяца месяц день_недели команда
    # Запускать скрипт резервного копирования каждый день в 2:30 ночи
    30 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1

Практические примеры расписания:

  • 0 * * * * – в начале каждого часа.
  • */10 * * * * – каждые 10 минут.
  • 0 18 * * 1-5 – в 18:00 с понедельника по пятницу.

Для системных задач можно редактировать /etc/crontab или помещать файлы конфигурации в /etc/cron.d/.

Проверка и отладка:

  • Просмотреть задания текущего пользователя: crontab -l.
  • Логи cron обычно находятся в /var/log/syslog или /var/log/cron. Всегда перенаправляю вывод скриптов в лог-файлы для отслеживания выполнения.

Ответ 18+ 🔞

А, cron! Ну это же классика, ёпта. Системный дедлайн-менеджер, который никогда не забывает тебе напомнить, что ты — распиздяй, если скрипт кривой.

Смотри, чтобы этот старичок начал работать, нужно ему мозги вправить. Берёшь и лезешь в его настройки командой crontab -e. Откроется файлик, обычно в каком-нибудь vi, от чего у новичков волнение ебать начинается. Но ты не паникуй, просто нажми i, чтобы писать.

Там вся магия в одной строке. Формат у неё — хуй с горы, сначала кажется, что китайская грамота. Идёт так: минута, час, день месяца, месяц, день недели, и наконец — команда, которую надо впендюрить.

Вот смотри, пример из жизни:

# минута час день_месяца месяц день_недели команда
# Запускать скрипт резервного копирования каждый день в 2:30 ночи
30 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1

Звёздочки — это «всегда» или «любое значение». То есть тут: 30-я минута, 2 часа ночи, любой день месяца, любой месяц, любой день недели. Иными словами — каждый день в 2:30 утра скрипт backup.sh получит по жопе.

А вот ещё парочка жизненных ситуаций, чтобы въехал:

  • 0 * * * * – Ровно в начале каждого часа. Каждый час, бля, как швейцарские часы.
  • */10 * * * * – Каждые 10 минут. Для параноиков, которые хотят всё контролировать.
  • 0 18 * * 1-5 – Ровно в шесть вечера, но только с понедельника по пятницу. Рабочая неделя, сука, даже для демонов.

Если ты чувствуешь себя полубогом и хочешь настроить задачи для всей системы, а не только для своей учетки, то лезь в /etc/crontab или кидай свои конфиги в папку /etc/cron.d/. Но там уже подозрение ебать чувствую — одно неверное движение, и будет вам хиросима на сервере.

И главное, чувак, после того как настроил — не верь слепо! Cron — он тихий, как партизан. Выполнил задачу — и молчок. Поэтому всегда, блядь, всегда перенаправляй вывод своих скриптов в лог-файлы, как в примере (>> /var/log/backup.log 2>&1). А то будешь как дурак сидеть и гадать, почему бэкап не делается, а он, зараза, уже полгода падает с ошибкой, про которую тебе никто не сказал.

Посмотреть, что ты там навтыкал, можно командой crontab -l. А если что-то не запускается — иди в логи. Обычно они валяются в /var/log/syslog. Ищи там по слову «CRON». Вот тогда-то и вылезет вся правда, какая у тебя там мудя в скриптах.