Linux notes #14 — Как запланировать выполнение задачи в Linux

Любая повторяющаяся работа, должна быть автоматизирована. Планировщики можно отнести к инструментам автоматизации, так как они помогают нам выполнять одно и тоже действие, без нашего участия. Рассмотрим доступные в Linux инструменты.

Утилита at подходит для задачи, которую нужно сделать один раз. Например сегодня в 22 часа нам нужно перезагрузить наш сервер, предварительно перезагрузив nginx. В терминале вводим

at 22:00

Затем 

sudo systemctl restart nginx
sudo reboot
Ctrl + D

Чтобы посмотреть, созданные задачи

at -l
или
atq

Чтобы удалить задачи

atrm 1
или
at -r 1

Есть более универсальное средство — cron

Создадим задачу для выполнения с правами текущего пользователя

crontab -e

По умолчанию откроется всеми любимый vim и если вы хотите использовать например nano

echo “export EDITOR=nano” >> ~/.bashrc
bash
crontab -e

Давайте запланируем бэкап в 22:30 каждую субботу

30 22 * * 6 /usr/bin/backup

Отмечу, что для воскресенья лучше использовать 0, а не 7

Проверим

crontab -l

Чтобы не запутаться во времени, можно посмотреть пример в 

cat /etc/crontab

Есть полезные сайты, помогающие в этой задаче, например

crontab.guru

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

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly