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

Вы когда-нибудь хотели, чтобы что-то запускалось каждый раз при загрузке вашего Raspberry Pi? Например, вывод IP-адреса, монтирование диска или практически что угодно другое, что может делать Raspberry Pi? На самом деле это довольно просто, и есть несколько способов сделать это. Один из распространённых способов – поместить команду в /etc/rc.local, который выполняется каждый раз при загрузке Raspberry Pi.

Запуск программы при загрузке Raspberry Pi

/etc/rc.local

Команды в этом файле выполняются при загрузке вашего Raspberry Pi, до того как какие-либо пользователи войдут в систему. Вы можете либо поместить свои команды непосредственно сюда, либо запустить скрипт, который находится в другом месте на вашем Raspberry Pi. Однако, поскольку на этом этапе никто не вошёл в систему, вы должны использовать полностью явные пути к папкам.

Например, может быть очень полезно отобразить IP-адрес вашего Raspberry Pi на экране командной строки, если вы не загружаетесь в режим рабочего стола. Вы сможете увидеть его в самом конце загрузки, непосредственно перед запросом имени пользователя. Отредактируйте файл rc.local с помощью:

sudo nano /etc/rc.local

Непосредственно перед строкой exit 0 добавьте следующее:

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
    printf "My IP address is %s\n" "$_IP"
fi

Как обычно в nano, сохраните файл и выйдите с помощью Ctrl+X, Y, затем Enter.

Первая строка (начинающаяся с #) – это комментарий. Следующая строка устанавливает переменную shell-скрипта _IP равной IP-адресу вашего Raspberry Pi (если он есть). Если IP-адрес есть, то условие if выводит My IP address is xxx.xxx.xxx.xxx.

Теперь каждый раз при загрузке вы будете видеть свой IP-адрес.

Создание shell-скрипта

В качестве альтернативы вы можете создать shell-скрипт, который будет запускаться при каждой загрузке. Он должен находиться в известном месте, поэтому, предполагая, что вы вошли в систему как pi, используйте:

cd ~

Это приведёт вас в папку /home/pi на вашем Raspberry Pi, которая является «домашним» каталогом пользователя с именем pi.

Теперь создайте новый скрипт:

touch startup.sh
nano startup.sh

И добавьте следующий текст в файл:

#! /bin/sh
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
    printf "My IP address is %s\n" "$_IP"
fi

Сохраните файл и выйдите с помощью Ctrl+X, Y, затем Enter.

Теперь вам нужно сделать файл исполняемым.

chmod +x startup.sh

И снова отредактируйте файл /etc/rc.local с помощью:

sudo nano /etc/rc.local

Удалите код, который вы добавили на первом шаге, и замените его на:

/home/pi/startup.sh

Сохраните файл и выйдите с помощью Ctrl+X, Y, затем Enter.

Теперь вы увидите свой IP-адрес при следующей загрузке. Попробуйте.

Запуск фоновых процессов

Этот способ хорошо работает для всего, что выполняется конечное время, но если вы запускаете что-то, что продолжает работать, и при этом всё ещё хотите управлять своим Raspberry Pi, вам нужно добавить символ & в конец строки. Например, если у вас есть Python-скрипт с именем MyPiScript.py, то строка в /etc/rc.local будет выглядеть так:

/home/pi/startup.sh &

Почему бы не попробовать? Может быть, вы можете добавить светодиод на макетной плате к вашему Raspberry Pi, который мигает 5 секунд каждый раз при запуске Raspberry Pi? Или заставить его махать флагом с помощью маленького мотора? Возможности безграничны!

В будущем руководстве мы расскажем вам о другом методе запуска скрипта каждый раз при загрузке вашего Raspberry Pi или через регулярные промежутки времени.