Bash Linux + Git: от новичка до уверенного пользователяРабота с процессами и задачамиАвтоматизация задач (cron, at)

Автоматизация задач (cron, at)

Уроки курсаАвтоматизация задач (cron, at)

Автоматизация задач (cron, at)

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

  • cron: это демон (фоновая служба) на UNIX-системах, который занимается запуском указанных задач по заданному расписанию. У каждого пользователя может быть свой список cron-задач (cron jobs). Редактировать его можно командой crontab -e. Формат записей в crontab включает 5 первых полей, определяющих время запуска (минуты, часы, день месяца, месяц, день недели), и затем команду для выполнения. Например:

    0 6 * * * /home/user/backup.sh

    Эта строка означает: каждый день в 6:00 утра выполнять скрипт /home/user/backup.sh. Символ * означает "каждое возможное значение" в данном поле (в нашем примере: каждый день месяца, каждый месяц, любой день недели). Настроив cron, можно добиться полной автономности: задачи будут выполняться регулярно без вашего участия. Главное – убедиться, что скрипт работает как задумано, потому что ошибки в нём тоже будут происходить по расписанию!

  • at: утилита для назначения однократного запуска задачи в определённое время. Формат использования: at HH:MM или, например, at now + 30 minutes, после чего вы попадаете в режим ввода команд (печатаете, какие команды выполнить в это время, потом нажимаете Ctrl+D). Пример:

    $ at 23:00
    at> echo "Полночь близко" > ~/late.txt
    at> <Ctrl+D>
    job 5 at Wed Mar 12 23:00:00 2025

    Это запланирует однократное выполнение команды в 23:00 сегодняшнего дня. С помощью atq можно посмотреть очередь задач, а atrm – удалить запланированную задачу. at хорош, когда надо что-то сделать позже единожды (например, выключить компьютер через 2 часа: echo "shutdown -h now" | at now + 120 minutes), без возни с cron и отменой расписания вручную.

Используя cron и at, ты можешь поручить машине работу на будущее: будь то регулярная очистка папки загрузок каждую неделю, отправка отчёта каждое утро или одноразовое напоминание. В связке с умениями писать скрипты – это мощный инструмент ленивого (то есть эффективного!) администратора.