Автоматический запуск программ через крон на Raspberry Pi

Мы собираемся запускать программы автоматически при загрузке или через определенное время на Raspberry Pi через использование крона.

Что такое крон (Cron)?

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

Cron - это утилита планировщика задач по умолчанию в операционных системах на базе Linux, таких как Raspberry Pi OS.

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

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

Запуск программы при старте

Шаг 1. Откройте crontab (кронтаб), используя команду ниже:

$ sudo crontab -e

Crontab позволяет просматривать и редактировать файл таблицы cron. Файл таблицы cron - это список запланированных задач для конкретного пользователя на устройстве. Он есть даже у пользователя root.

Шаг 2.

Далее, выберите текстовый редактор.

Терминал должен предложить выбор предпочитаемого текстового редактора, если использовать командную строку через сочетание клавиш ALT + F1. Но некоторые терминалы могут не спросить, а просто открыть файл с помощью редактора Nano. Использование другого текстового редактора не имеет значения, так что просто выберите тот, который вам удобен.

Шаг 3. Затем добавьте программу, которую вы хотите запустить при загрузке, в конец файла.

@reboot python3 /home/pi/filename.py

Чтобы запустить программу при загрузке, в начале строки должно быть написано @reboot. После этого можно добавлять все, что нужно. Для нашего примера, мы запускаем программу python3, чтобы запустить интерпретатор python3, а затем указываем путь к скрипту.

Шаг 4. Наконец, сохраните и выйдите.

Для запуска программы при запуске необходимо иметь разрешение an на выполнение приложения и файла. Вы можете проверить с помощью ls -l. В противном случае, чтобы добавить разрешение, введите:

$ sudo chmod a+x FILENAME

Регулярный запуск программы

Шаг 1. Откройте crontab (кронтаб):

$ sudo crontab -e

Шаг 2. Выберите текстовый редактор.

Шаг 3. Добавьте запланированное задание.

Для этого мы должны ознакомиться с форматом записи таблицы cron. Обратите внимание на последнюю строку:

# m h  dom mon dow   command

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

# * * * * *  command to execute
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── day of week (0 - 7) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
# │ │ │ └────────── month (1 - 12)
# │ │ └─────────────── day of month (1 - 31)
# │ └──────────────────── hour (0 - 23)
# └───────────────────────── min (0 - 59)

Например, предположим, что вы хотите запускать программу с именем filename.py каждый день в 3 часа дня. Запись должна выглядеть так:

0 15 * * *  python3 /home/pi/filename.py

Шаг 4. Сохраните и выйдите.

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

crontab -l

Примеры использования крона

Пример 1. Чтобы запускать задание cron каждые 5 минут, добавьте следующее:

*/5 * * * * <command-to-execute>

Пример 2. Чтобы запускать задание cron каждые четверть часа (т.е. каждые 15 минут), добавьте следующее:

*/15 * * * * <command-to-execute>

Например, если время 11:00, следующее задание будет запущено в 11:15, 11:30, 11:45 и так далее.

Пример 3. Чтобы запускать cron-задание каждый час на 30-й минуте:

30 * * * * <command-to-execute>

Например, если время 10:00, следующее задание будет выполняться в 10:30, 11:30, 12:30 и так далее.

Пример 4. Вы также можете определить несколько временных интервалов, разделенных запятыми. Например, следующее задание cron будет запускаться трижды каждый час на 0, 5 и 10 минутах:

0,5,10 * * * * <command-to-execute>

Пример 5. Запускать cron-задание каждые полчаса, то есть каждые 30 минут:

*/30 * * * * <command-to-execute>

Например, если сейчас 10:00, следующее задание будет выполняться в 10:30, 11:00, 11:30 и так далее.

Пример 6. Запускать задание каждый час (на 0 минуте):

0 * * * * <command-to-execute>

Например, если сейчас 10:00, следующее задание будет запущено в 11:00, 12:00, 13:00 и так далее.

Пример 7. Запускать задание каждые 2 часа:

0 */2 * * * <command-to-execute>

Например, если сейчас 10:00, следующее задание будет запущено в 12:00.

Пример 8. Запускать задание каждый день (запускается в 00:00):

0 0 * * * <command-to-execute>

Пример 9. Выполнять задание каждый день в 3 часа ночи:

0 3 * * * <command-to-execute>

Пример 10. Выполнять задание каждое воскресенье:

0 0 * * SUN <command-to-execute>

или

0 0 * * 0 <command-to-execute>

Начнется ровно в 00:00 в воскресенье.

Пример 11. Выполнять задание каждый день недели с понедельника по пятницу, т.е. каждый будний день:

0 0 * * 1-5 <command-to-execute>

Пример 12. Выполнять задание каждый месяц (т.е. в 00:00 1-го числа месяца):

0 0 1 * * <command-to-execute>

Пример 13. Запустить задание в 16:15 в день месяца 1:

15 16 1 * * <command-to-execute>

Пример 14. Выполнять задание каждый квартал, то есть в день месяца 1 каждые 3 месяца:

0 0 1 */3 * <command-to-execute>

Пример 15. Запустить задание в определенный месяц в определенное время:

5 0 * 4 * <command-to-execute>

Работа начнется в 00:05 в апреле.

Пример 16. Выполнять задание каждые 6 месяцев:

0 0 1 */6 * <command-to-execute>

Это задание cron будет запускаться в 00:00 1-го числа каждого 6-го месяца.

Пример 17. Выполняйте задание каждый год:

0 0 1 1 * <command-to-execute>

Это задание cron начнется в 00:00 1-го числа января.

19 ноября 2020 в 21:15
Опубликовано:
Статьи,

Добавить комментарий

Ваш E-mail не будет никому виден. Обязательные поля отмечены *