У цій статті буде пояснено завдання планування та запуск сценаріїв через рівні проміжки часу із використанням завдань cron.
Що таке Крон?
Cron - це програма планування завдань, яка працює у фоновому режимі як процес. Він може використовуватися для періодичного запуску певних завдань, запланованих за допомогою попередньо визначеного набору правил. Cron поставляється попередньо встановленим на більшості дистрибутивів Linux або доступним у сховищах для встановлення вручну.
Cron Presets
Cron на Ubuntu постачається з набором заздалегідь визначених планувальників. Ви можете перевірити їх, виконавши команду нижче:
$ ls / etc / cron.*Зазвичай ці папки є “/ etc / cron.погодинно ”,“ / etc / cron.щодня ”,“ / etc / cron.щомісяця ”та“ / etc / cron.щотижня ”.
Просто помістіть потрібні сценарії в одну з цих папок, щоб запускати автоматизовані завдання щогодини, щодня, щомісяця або щотижня.
Зверніть увагу, що cron використовує оболонку “/ bin / sh” за замовчуванням. Якщо ви хочете використовувати “/ bin / bash” як оболонку в скриптах cron, вам слід використовувати “!# / bin / bash ”hashbang у верхній частині файлу сценарію або визначте оболонку як змінну“ SHELL = / bin / bash ”у першому рядку запланованого сценарію bash. Перевизначення змінної середовища “SHELL” також працює для редактора crontab, про який пояснено нижче.
Не всі змінні системного середовища можуть бути піддані роботі cron. Тож загалом є гарною ідеєю вручну визначати важливі змінні середовища у сценарії, запланованому cron.
Кронтаб
Crontab дозволяє визначити власні заплановані завдання. Ви можете використовувати його для налаштування розкладів cron, відмінних від чотирьох стандартних пресетів cron, описаних вище.
Щоб встановити заплановане завдання в crontab, спочатку запустіть редактор crontab, використовуючи команду нижче:
$ crontab -eТепер у кінці файлу ви можете додати запис у наступному форматі:
хвилина година день місяць будень / повний / шлях / до / сценарію.шДе:
- хвилина: будь-яке значення в діапазоні від 0 до 59
- година: будь-яке значення в діапазоні від 0 до 23, 0 - опівночі
- день: будь-яке значення в діапазоні від 1 до 31
- місяць: будь-яке значення в діапазоні від 1 до 12
- день тижня: будь-яке значення в діапазоні від 0 до 6, 0 - неділя
Введений нижче запис crontab зробить знімок екрану робочого столу і збереже його у вашому домашньому каталозі один раз о 15:13 2 березня плюс кожен вівторок березня о 15:13 год.
13 15 2 3 2 мошонкаЩоб перерахувати всі записи crontab, використовуйте команду нижче:
$ crontab -lБільше прикладів
Завдання Cron найкраще пояснити на прикладах, тому нижче наведено кілька прикладів, які періодично робитимуть знімки екрану робочого столу та зберігатимуть їх у домашній папці.
Окрім п’яти змінних планування, cron також використовує спеціальний рядок для планування завдань. Ці рядки:
- @hourly: робота виконується щогодини
- @daily / @midnight: робота виконується щодня
- @ тиждень: робота працює раз на тиждень
- @ щомісяця: робота працює раз на місяць
- @yearly / @anually: робота працює раз на рік
- @reboot: робота запускається один раз при кожному перезавантаженні / вході
Наведений нижче запис crontab робить скріншот один раз при кожному перезавантаженні:
@reboot scrotВи можете замінити “@reboot” будь-якими іншими спеціальними рядками, згаданими вище.
Використання зірочки або символу підстановки замість будь-якої з п’яти змінних повторить завдання для всіх нових примірників цієї змінної. Запис нижче буде робити знімок екрана щохвилини:
* * * * * ПрокруткаЩогодини:
0 * * * * прокруткаЩодня о 18:00:
0 18 * * * прокруткаЩомісяця 6-го о 18:00:
0 18 6 * * скротВикористовуйте “/” для запуску сценарію з фіксованим періодичним інтервалом у 30 хвилин (виконується кожні 30 хвилин):
* / 30 * * * * прокруткаВи можете використовувати змінні, розділені комами, щоб визначити повторюване виконання сценарію через рівні проміжки часу. У наведеному нижче прикладі буде зроблений знімок екрану робочого столу кожної 1-ї, 4-ї та 5-ї хвилини нової години.
1,4,5 * * * * мошонкаПеревірка записів Crontab
Визначення записів crontab може бути складним, але налагоджувати їх або перевіряти, чи вони працюють у правильних позначках часу, ще складніше. Одним із варіантів є використання віртуальної машини та реєстрація часових позначок сценарію, що періодично запускається на завданні cron, включаючи щось на зразок команди “date” та перенаправляючи висновок у текстовий файл. Однак кращим рішенням є використання однієї з численних Інтернет-служб тестування вакансій, доступних в Інтернеті. Я рекомендую надати веб-сайт cron tester тут спробувати.
Висновок
Запуск завдань cron - це чудовий спосіб автоматизувати повторювані завдання, особливо на серверах. Інструмент надзвичайно потужний і настроюється. Однак важливо переконатися, що визначення планувальника працює правильно, особливо якщо є критично важливі завдання.