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