Каталог товаров

Запуск команды при загрузке

В этой статье показано, как использовать команды запуска Omega сразу после завершения загрузки. Эту функцию можно использовать по-разному: например, показ приветственного сообщения в расширении OLED, когда Omega загрузился, или подключение к серверу. Настройка довольно простая: поехали!

Реализация

Мы начнем с написания скрипта, который будет выполнять те действия, которые мы хотели бы выполнять после каждой загрузки. Если у вас уже есть скрипт или команда, которую вы хотите запустить при загрузке, вы можете пропустить шаг «Написание сценария оболочки».

Написание сценария оболочки

Давайте создадим наш скрипт в каталоге /root и назовем его rgb-led.sh:

vi /root/rgb-led.sh

Каталог /root - это лучшее место для размещения ваших проектов, чтобы они не удалялись при обновлении прошивки.

Теперь давайте напишем небольшой скрипт мигания красным, затем зеленым, затем синим светодиодом 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

Скопируйте приведенный выше код в свой файл, затем сохраните и выйдите из файла. Далее в командной строке введите следующее:

chmod +x /root/rgb-led.sh

Приведенная выше команда изменит права на выполнение файла и позволит выполнить ваш скрипт: /root/rgb-led.sh.

Кроме того, сценарий можно запустить, введя sh /root/rgb-led.sh, обратите внимание, что он будет работать без изменения разрешений на выполнение файла. Тем не менее, иногда удобно иметь возможность запустить скрипт, просто набрав имя файла.

Редактирование файла /etc/rc.local

Файл /etc/rc.local - это сценарий, который будет автоматически выполняться системой после завершения загрузки.

Когда Omega загрузится, он будет читать команды из файла /etc/rc.local и выполнять их.

Наберите vi /etc/rc.local, и вы увидите содержимое файла:

# Put your custom commands here that should be executed once

# the system init finished. By default this file does nothing.

 

exit 0

Здесь мы видим, что команды в этом файле будут выполняться после инициализации системы, и что единственная команда, которую он запускает, - это exit 0. Давайте изменим это и заменим цвета при загрузке.

Для этого отредактируйте файл /etc/rc.local так, чтобы он выглядел следующим образом:

# Put your custom commands here that should be executed once

# the system init finished. By default this file does nothing.

 

sh /root/rgb-led.sh

 

exit 0

Мы добавили команду, которую хотим запустить:

sh /root/rgb-led.sh

Сохраните и выйдите, перезагрузите Omega, чтобы увидеть результаты!

Сохранение вывода команд rc.local (опционально)

Когда /etc/rc.local запускается при загрузке, вы не сможете увидеть какой-либо вывод из вашего файла. Вам понадобится просмотреть выходные данные, чтобы увидеть, где ваш код не работает.

Вы можете направить вывод вашей команды в конкретное место назначения с помощью простого добавления в файл /etc/rc.local.

Синтаксис для передачи вашей команды в файл выглядит следующим образом:

>> 2>&1

>> добавляет вывод вашей команды в выходной файл. 2>&1 - это индикатор для сценария оболочки о том, что вы хотите включить сообщения об ошибках в выходные данные вашей команды. По умолчанию передается только стандартный вывод.

Чтобы применить это к вашей команде при загрузке, просто отредактируйте файл /etc/rc.local следующим образом:

# Put your custom commands here that should be executed once

# the system init finished. By default this file does nothing.

 

sh /root/rgb-led.sh >> /tmp/output.txt 2>&1

 

exit 0

Глядя на /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:/# sh /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

Вы можете вернуться в файл /etc/rc.local и закомментировать строку, в которой выполняется сценарий, чтобы не допустить мигания индикатора RGB Expansion Dock.

Поиск проблем

Если ваши команды не работают при загрузке, попробуйте скопировать их непосредственно из файла /etc/rc.local и запустить их вручную.

Бесконечный код

Если ваша команда выполняется непрерывно и никогда не достигает строки exit 0 в файле /etc/rc.local, значит, Omega не может успешно завершить последовательность загрузки. Чтобы избежать этого сценария, убедитесь, что вы разветвляете процесс, добавив амперсанд в конец команды:

&

Контакты

г. Москва, Пятницкое ш. д. 18, пав. 566

zakaz@compacttool.ru

8-495-752-55-22

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !

© Все права защищены 2021г https://compacttool.ru