Введение в cron jobs

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

  • Освобождение дискового пространства
  • Текущее обслуживание наших компьютеров
  • Очистка журналов и т. Д.

По сути, все, что нам нужно делать постоянно. У этих задач есть одна общая черта: мы должны периодически заботиться о них.

Что такое работа в Cron?

Задания Cron - одна из самых полезных утилит в Unix-подобных операционных системах. Они созданы специально для таких случаев. Это планировщик заданий на основе времени, который выполняет повторяющиеся задачи.

Мы можем использовать их для настройки команд, запускаемых либо через фиксированные даты, либо через определенные промежутки времени. Это позволяет нам автоматизировать определенные задачи, такие как обслуживание или общее администрирование.

Как они работают?

Задания Cron используют следующий формат для выполнения команд. Каждый символ представляет собой единицу времени, от минут до месяцев.

Звездочка представляет любое значение. Помимо этого, у нас также есть набор специальных символов, которые вы можете использовать для диапазонов:

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

0 0 * * *

Если вам нужно выполнять определенную задачу только один раз в неделю, например, по воскресеньям (или воскресеньям и понедельникам), то ваш синтаксис изменится на следующий:

0 0 * * Sun
0 0 * * Sun,Mon

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

Вакансии Cron в узле

Чтобы использовать задания cron в узле, нам нужно будет запустить npm i cron для нашего проекта. Чтобы начать новую работу, создайте новый файл и добавьте следующее:

После включения модуля cron мы можем создавать новые задания, используя ключевое слово new. Это предполагает два обязательных параметра. Один для выражения и один для функции обратного вызова.

Возможно, вы заметили, что у нас 6 значений вместо 5. Это связано с тем, что node-cron также поддерживает секунды. Также обратите внимание, что вы должны начинать каждое задание явно с job.start(). Это дает вам некоторую гибкость при выполнении заданий. Вы также можете указать часовые пояса в качестве пятого аргумента:

Два дополнительных параметра перед часовым поясом:

  • onComplete: функция, которая запускается, когда задание останавливается с помощью job.stop().
  • start: указывает, запускать ли задание cron автоматически. По умолчанию установлено значение false. Это означает, что вам нужно позвонить job.start(), чтобы начать работу.

Список всех доступных часовых поясов вы можете найти на официальном сайте Moment.js.

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

Отправка запланированных уведомлений

Во-первых, давайте посмотрим, как можно запланировать несколько заданий одновременно. Измените содержимое job.js на следующее и запустите его с node job.js.

Здесь мы создали массив заданий с шаблоном и свойством сообщения. Мы можем просмотреть их в цикле, чтобы создать новое задание cron, используя new cronJob, и сразу же запустить его. Это должно дать вам следующее в консоли:

Чтобы использовать push-уведомления в Node, нам потребуется npm i node-notifier. Это связано с тем, что у нас нет доступа к API веб-push-уведомлений. Измените job.js на следующее:

Здесь мы добавили модуль notifier и изменили паттерны. Первый будет казнен каждый вторник в 10 часов утра. Второй запускается каждый день недели с понедельника по пятницу. Если вы запустите job.js сейчас, он должен уведомить вас в нужный момент:

Резюме

Если вы зашли так далеко, вы должны были теперь завоевать страну крон. У вас есть предложения о том, как cron может помочь в нашей повседневной жизни? Дайте нам знать об этом в комментариях. Спасибо, что нашли время прочитать эту статью, удачного планирования!

Примечание из JavaScript In Plain English

Мы всегда заинтересованы в продвижении качественного контента. Если у вас есть статья, которую вы хотите отправить в JavaScript In Plain English, отправьте нам письмо по адресу [email protected] с вашим именем пользователя Medium, и мы добавим вас в качестве автора.

Также мы выпустили три новых издания! Проявите некоторую любовь к нашим новым публикациям, подписавшись на них: AI на простом английском, UX на простом английском, Python на простом английском - спасибо и продолжайте учиться!