Omega имеет мощную встроенную функцию, которая называется cron, которая позволяет планировать команды для запуска через определенные промежутки времени. Из этой статьи вы узнаете, как использовать cron для автоматизации команд и действий на Omega.
Эта функция может быть особенно полезной для автоматизации проектов. Например, вы можете создать устройство мониторинга погоды, которое отображает информацию на OLED Expansion, и обновлять его каждый час с помощью нескольких простых шагов.
В вычислительных терминах служебный процесс - это программа, которая работает в фоновом режиме и отвечает на запросы сервисов. В Omega cron работает как служебный процесс и контролирует crontab - файл, в котором перечислены команды, которые должны выполняться с заданными интервалами. Этими командами могут быть программы, сценарии и все, что вы можете ввести в командной строке.
Чтобы узнать, как использовать cron, мы напишем скрипт, который будем использовать для выполнения по расписанию. Если у вас уже есть команда, которую вы хотите выполнить, вы можете пропустить подраздел «Написание сценария оболочки».
Теперь давайте напишем небольшой скрипт мигания красным, затем зеленым, затем синим светодиодом RGB на Expansion Dock, и на случай, если вы пропустите первое мигание, он помигает еще раз через 5 секунд, а затем выключится.
Вот как это выглядит:
#!/bin/sh -e
expled 0xff0000 #Red
expled 0x00ff00 #Green
expled 0x0000ff #Blue
sleep 5 #wait five seconds
expled 0xff0000 #Red
expled 0x00ff00 #Green
expled 0x0000ff #Blue
expled 0x000000 #Off
Создайте в командной строке файл с помощью vi /root/rgb-led.sh и вставьте приведенный выше код во вновь созданный файл. Сохраните и выйдите из файла, в командной строке введите следующую команду:
chmod + x /root/rgb-led.sh
Эта команда позволит запустить ваш скрипт как программу.
Чтобы начать работу с cron, введите в командной строке следующую команду:
crontab -e
Если вы никогда ранее не работали с cron, появится пустой файл. Первое, что нам нужно сделать, - обозначить команду для запуска с интервалом. Давайте изменим цвет светодиода на панели расширения с помощью expled. В пустом файле введите следующее:
#
*/1 * * * * /root/rgb-led.sh
# Убедитесь, что у вас есть этот комментарий в конце crontab
Сохраните и выйдите из файла. Затем перезапустите cron с помощью следующей команды, чтобы применить изменения:
/etc/init.d/cron restart
Ваш код запустится не позднее, чем через 59 секунд, потому что cron будет ждать следующей минуты для запуска (например, 6:05:59, 6:06:00)
Итак, давайте разберемся, как cron будет читать файл crontab. Вот краткий обзор того, как работает синтаксис cron:
# * * * * * команда для выполнения
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── день недели (0 - 7) (0 – воскресенье, 6 - суббота, 7 – каждый день)
# │ │ │ └────────── месяц (1 - 12)
# │ │ └─────────────── число месяца (1 - 31)
# │ └──────────────────── час (0 - 23)
# └───────────────────────── минута (0 - 59)
А вот несколько примеров с объяснениями:
Для дней недели cron рассматривает 0 как воскресенье, а установка дней недели на 7 приводит к выполнению команды ежедневно.
Диапазоны каждого значения (мин, час и т. д.) следующие:
Время записывается в виде 24 часов.
Файл crontab должен заканчиваться комментарием для запуска cron.
Для получения дополнительной информации о cron, включая дополнительные правила и ссылки, вы можете обратиться к руководству OpenWRT по Cron.
Когда запустится cron, вы не сможете увидеть вывод вашего файла. Вы можете сохранить весь вывод в файл, а не печатать его в командной строке, или вы можете направить вывод вашей команды в конкретное место назначения с помощью простой команды.
Синтаксис для передачи вашей команды в файл выглядит следующим образом:
>> добавляет вывод вашей команды в выходной файл. 2>&1 - это индикатор для сценария оболочки о том, что вы хотите включить сообщения об ошибках в выходные данные вашей команды. По умолчанию передается только стандартный вывод.
Вы можете легко добавить это к команде cron. Введите:
crontab -e
и отредактируйте команду, чей вывод вы хотите передать.
Из предыдущего примера это будет выглядеть так:
#
*/1 * * * * /root/rgb-led.sh >> /tmp/output.txt 2>&1
#
В /tmp/output.txt мы увидим:
Setting LEDs to: ff0000
Duty: 0 100 100
> Set GPIO16: 1
> Set GPIO15: 1
Setting LEDs to: 00ff00
Duty: 100 0 100
> Set GPIO17: 1
> Set GPIO15: 1
Setting LEDs to: 0000ff
Duty: 100 100 0
> Set GPIO17: 1
> Set GPIO16: 1
Setting LEDs to: ff0000
Duty: 0 100 100
> Set GPIO16: 1
> Set GPIO15: 1
Setting LEDs to: 00ff00
Duty: 100 0 100
> Set GPIO17: 1
> Set GPIO15: 1
Setting LEDs to: 0000ff
Duty: 100 100 0
> Set GPIO17: 1
> Set GPIO16: 1
Setting LEDs to: 000000
Duty: 100 100 100
> Set GPIO17: 1
> Set GPIO16: 1
> Set GPIO15: 1
и если мы запустим скрипт /root/rgb-led.sh в командной строке, мы должны увидеть тот же результат:
root@Omega-2757:/# /root/rgb-led.sh
Setting LEDs to: ff0000
Duty: 0 100 100
> Set GPIO16: 1
> Set GPIO15: 1
Setting LEDs to: 00ff00
Duty: 100 0 100
> Set GPIO17: 1
> Set GPIO15: 1
Setting LEDs to: 0000ff
Duty: 100 100 0
> Set GPIO17: 1
> Set GPIO16: 1
Setting LEDs to: ff0000
Duty: 0 100 100
> Set GPIO16: 1
> Set GPIO15: 1
Setting LEDs to: 00ff00
Duty: 100 0 100
> Set GPIO17: 1
> Set GPIO15: 1
Setting LEDs to: 0000ff
Duty: 100 100 0
> Set GPIO17: 1
> Set GPIO16: 1
Setting LEDs to: 000000
Duty: 100 100 100
> Set GPIO17: 1
> Set GPIO16: 1
> Set GPIO15: 1
Вы можете вернуться в crontab и закомментировать строку, которая запускается каждую минуту, чтобы индикатор RGB док-станции расширения не мигал.
Не забудьте завершить файл crontab комментарием, иначе он не запустится.
Если ваша команда предполагает перезагрузку вашего Omega, пожалуйста, ознакомьтесь с этой статьёй, предоставленной OpenWRT.
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru