Давайте посмотрим на некоторые из реальных примеров работы cron.
- Допустим, у вас есть веб-сайт, и вы хотите отправлять всем пользователям своего веб-сайта электронные письма каждый день. Все, что вам нужно сделать, это написать сценарий отправки электронной почты и настроить задание cron для запуска этого сценария каждый день.
- Допустим, у вас есть рекламное агентство, и вы хотите напомнить всем рекламодателям, на балансе которых меньше 5 долларов, пополнить счет. Все, что вам нужно сделать, это написать скрипт, который проверяет баланс всех рекламодателей, и когда он ниже 5 долларов, он отправит уведомление на мобильный номер или электронную почту рекламодателя. Затем настройте задание cron для запуска скрипта каждые 5-10 минут или каждый час.
В Linux есть много других вариантов использования заданий cron.
В этой статье я покажу вам, как запускать задания cron каждую минуту в Linux. Я буду использовать Debian 9 Stretch для демонстрации. Но вы можете использовать любой современный дистрибутив Linux по вашему выбору. Давайте начнем.
Основы Crontab:
В Linux вам не обязательно быть корень для запуска заданий cron. Вы можете запускать задания cron от имени любого пользователя. Каждый пользователь Linux может использовать crontab файл для запуска собственного набора заданий cron.
По умолчанию у пользователя нет crontab файл в Linux. Вы можете создать crontab файл с помощью следующей команды:
$ crontab -e
Если вы запускаете эту команду впервые, вам будет предложено выбрать текстовый редактор из списка. Я выберу нано, по умолчанию. Вы можете выбрать тот, который вам нравится. Когда вы закончите, нажмите
В crontab файл должен быть создан (если он еще не доступен) и открыт в вашем любимом текстовом редакторе. Теперь вы можете добавить свои собственные задания cron в конец этого файла, и когда вы будете довольны, просто сохраните его и выйдите из текстового редактора.
Синтаксис выполнения команды каждую минуту:
Синтаксис crontab файл выглядит следующим образом:
минута час деньOfMonth month dayOfWeek commandToRunЗдесь,
- минута может быть 0 к 59.
- час так же может быть 0 к 59.
- dayOfMonth может быть 1 к 31 год.
- месяц может быть 1 к 12.
- день недели может быть 0 к 7. 0 а также 7 означает воскресенье, 1 означает понедельник, 2 значит вторник и так далее.
Чтобы запустить commandToRun команду каждую минуту, вы должны записать ее в crontab файл следующим образом:
* * * * * commandToRunВыполнение Crob Job каждую минуту:
Теперь, когда мы знаем теории, давайте добавим простой скрипт таймер.ш к crontab файл и посмотреть, как с ним работать.
в таймер.ш скрипт, у меня есть только следующие строки кода. Все, что он делает, это создает новый файл / home / shovon / bin / таймер.бревно (если еще не существует) и добавляет к нему вывод команды date.
Теперь добавим скрипт в наш crontab и пусть он запускается каждую минуту со следующей строкой:
* * * * * / home / shovon / bin / timer.ш
Как только вы сохраните crontab файл и выйдите из текстового редактора, новый crontab файл должен быть установлен.
Через минуту появится новый файл таймер.бревно создается в желаемом каталоге, как вы можете видеть в отмеченном разделе на скриншоте ниже.
От таймер.бревно файл журнала, очевидно, что сценарий таймер.ш работает каждую минуту.
Выявление ошибок из заданий Cron:
Чтобы отловить ошибки из задания cron, вы можете отправить ошибки в ошибка.бревно файл и нормальные выходы в доступ.бревно файл например. Конечно, вы можете называть файлы как хотите.
Чтобы продемонстрировать это, я изменил свой сценарий таймер.ш совсем немного. Теперь ошибки отправляются на ошибка.бревно файл в / home / shovon / bin каталог, а выходы отправляются в доступ.бревно в / home / shovon / bin каталог.
Сначала / tmp / i_must_be_here файл не существует, поэтому я получаю сообщение об ошибке в ошибка.бревно файл, как вы можете видеть.
В доступ.бревно файл на данный момент пуст.
Теперь я собираюсь создать файл / tmp / i_must_be_here
Как видите, результат находится в доступ.бревно подать сейчас.
При желании вы можете перенаправить вывод и ошибки в один и тот же файл следующим образом:
Как видите, выходы STDIN и STDERR отправляются в вне.бревно файл.
Убедитесь, что последнее задание завершено Выполнение перед повторным запуском задания:
Чтобы это работало, вы можете создать временный файл сразу после запуска задания и удалить его незадолго до его завершения. Затем вы можете проверить, существует ли временный файл, прежде чем запускать задание. Если это так, вы можете выйти из задания и запустить его только тогда, когда временный файл недоступен.
Этот простой скрипт делает именно это.
Как видите, таймер.пид файл создан.
Читая доступ.бревно файл доказывает, что задание cron не запускается до завершения предыдущего задания cron. Как видите, он запускался в 01:32:01, а в следующий раз должен был запускаться в 01:33:01, но этого не произошло. Вместо этого он был запущен в 01:35:01, примерно через 3 минуты.
Организация вывода заданий Cron для упрощения отладки:
Вы можете красиво отформатировать выходные данные, чтобы упростить отладку вашей cron-задачи.
Пример того, как это можно сделать, приведен в следующем скрипте.
Как видите, выходные данные, сообщения об ошибках и успешном выполнении хорошо печатаются в файле журнала.
Вы можете делать удивительные вещи с заданиями cron и сценариями оболочки. Я продемонстрировал здесь некоторые идеи. Но небо - твой предел. Не стесняйтесь экспериментировать с любыми идеями, которые у вас есть. Спасибо, что прочитали эту статью.