Автоматизация с помощью Cron

В последнее время было довольно много проектов, в которых я обнаружил, что делаю утомительные вещи, которые можно легко автоматизировать. Введите Cron, планировщик заданий на основе времени.

Один или два раза в неделю я обновляю / перестраиваю свой сайт Jekyll, потому что он отображает мой канал Medium RSS как страницу блога. Поскольку сайт статичен, мне нужно перестраивать его каждый раз, когда я публикую что-то новое. Это не проблема, так как это всего лишь несколько команд, но иногда я забываю, и могут пройти недели, не обновляя свой сайт. Написать Cron-задание настолько легко, что вы обнаружите, что автоматизируете практически все повседневные задачи, которые выполняете.

Написание Cron Job

#bash
$ env EDITOR=nano crontab -e #opens nano in your terminal, with your crontab open. 

Теперь вы должны увидеть что-то подобное после выполнения указанной выше команды.

Ладно, не совсем так, так как здесь содержится моя работа cron, но это должен быть красивый пустой текстовый файл. Для моей цели я решил создать исполняемый файл с командами, а затем заставить cron запустить его, однако вы можете запускать команды здесь, просто лучше написать сценарий для него.

Временные интервалы Cron

Cron работает, выполняя ваши команды в определенное время, будь то еженедельно в понедельник в 14:00 или 15 числа каждого месяца. * * * * * в начале каждого определяет различную шкалу времени.

  • 1-й символ, * - Минута дня
  • 2-й символ, * * - Час дня
  • 3-й символ, * * * - День месяца
  • 4-й символ, * * * * - месяц года
  • 5-й символ, * * * * * - День недели (0–7, воскресенье обозначается цифрами 0 и 7)

В моем примере вы заметите, что я решил выполнять каждую неделю по воскресеньям.

Вот еще один пример, если вы хотите запускать задание в 6:30 каждый вторник.

#nano
30 18 * * 2 yourcommand #execute every Tuesday at 18:30
45 07 10 * * yourcommand # execute every 10th day of the month at 07:45
20 15 * * 3 yourcommand # execute at 15:20 every Wednesday

Давайте сделаем это немного проще и добавим несколько быстрых команд в наши .bashrc или .zshrc (в зависимости от того, что вы используете).

Используя команду alias, мы можем сократить длинную команду до чего-то более простого для запоминания и ввода.

#.bashrc or .zshrc
alias newcron="env EDITOR=nano crontab -e" #open a new crontab
alias cronjobs="crontab -l" # list our cronjobs

Теперь вы готовы автоматизировать все, что захотите!

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