Мы собираемся запускать программы автоматически при загрузке или через определенное время на Raspberry Pi через использование крона.
Содержание
Что такое крон (Cron)?
Потребность в автоматизации задач на Raspberry Pi удваивается в области встроенных систем, особенно в приложениях, требующих минимальной настройки.
Cron - это утилита планировщика задач по умолчанию в операционных системах на базе Linux, таких как Raspberry Pi OS.
Крон может запускать программы и сценарии оболочки при загрузке или через определенные промежутки времени. Он широко используется для автоматизации повторяющихся задач, таких как отправка отчетов, ежедневное обновление погоды, полив растений, проверка значений и данных и т.д.
К тому же крон широко используется всеми программистами, начиная с веб-разработки, заканчивая робототехникой.
Запуск программы при старте
Шаг 1. Откройте crontab (кронтаб), используя команду ниже:
$ sudo crontab -e
Crontab позволяет просматривать и редактировать файл таблицы cron. Файл таблицы cron - это список запланированных задач для конкретного пользователя на устройстве. Он есть даже у пользователя root.
Шаг 2.
Далее, выберите текстовый редактор.
Шаг 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-го числа января.