Этот вопрос задавался довольно много раз прежде, но я, кажется, не получал его, используя существующую информацию.
Мой Пи работает с Распбианом. У меня есть сценарий Python с именем dnscheck.py, который зацикливается навсегда.
Мне нужно, чтобы запустить при загрузке. Я знаю, что должен создать файл .sh, содержащий что-то вроде
sudo python dnscheck.py &
Чего я не знаю, так это того, где этот файл должен находиться или должен ли он содержать что-то еще. Я знаю о папке init.d, но, увидев пример скелета, я думаю, что должен быть более простой способ выполнить эту простую задачу.
Ответы:
Если вы хотите управлять процессом с помощью таких команд, как запуск, остановка, перезапуск и т. Д., Используя скрипт-скелет, и изменение его для ваших целей может быть лучшим вариантом.
Если вы просто хотите, чтобы процесс запускался, введите команду в
/etc/rc.local
. (У меня нет моего RPi, но я прочитал в Интернете, что там есть строка 'exit 0', вы должны поместить свою команду выше этой строки)источник
rc.local
запускается root. Вы также должны указать полный путь к сценарию, очевидно. Вы также должны добавить&
в конце, чтобы скрипт разветвился, например/path/to/foobar.py &
.&
? Потому что, когда я использую без него, все еще работает, как ожидалосьПереместите ваш скрипт (мы сохраним его в файл
dnscheck
)/etc/init.d/
и установите права доступа, чтобы он мог выполняться:Добавьте теги LSB init в начало вашего скрипта. Возможно, вы захотите изменить Required-Start / Stop и теги Description для соответствия вашему сценарию.
Затем создайте символические ссылки, запустив
источник
/etc/rc.local
недостаточно.Конечно, есть много способов сделать это, но не забывайте использовать
cron
. Если вы поместите@reboot
строку в ваш crontab, эта команда будет выполняться при каждом перезапуске.Чтобы проверить, я просто добавил следующую строку в свой пользовательский crontab с помощью
crontab -e
:@reboot echo "$(date)" >> ~/boot.txt
Преимущество этого метода заключается в том, что вы можете вызывать задание, как требуется, с другими интервалами, кроме просто времени загрузки, и вам не нужно редактировать сценарии инициализации.источник
если вы используете файл rc.local, это может быть полезно для устранения неполадок. Вы можете добавить строки регистрации в журнал ошибок (stderr) и вывод команды (stdout) в файл журнала. Согласно этому примеру этот файл сохраняется в /tmp/rc.local.log
Читать дальше
источник
Я очень удивлен Djb игровой Daemontools не упоминается здесь. Daemontools обеспечивает надлежащий контроль процесса, и вы можете добавлять интересные функции, такие как автоматически вращаемая запись в журнал. TL; DR, если вы не знакомы ни с чем из этого, ваш процесс будет перезапускаться каждый раз при сбое и запускаться автоматически при включении Pi. Это замечательно, если вы написали плохую программу на Python, в которой есть режимы сбоев, но вы не хотите, чтобы она просто умерла при возникновении ошибки.
Установка:
Затем выполните шаги для создания демонизированных процессов:
В основном это так же просто, как копирование
run
скрипта в/etc/service/<my_custom_service_name>
другой перк: вы можете запускать от имени любого пользователя или пользователя root! Подробности в ссылке.У меня был проект Pi, в котором у меня было 3 разных процесса Python (у каждого был цикл выполнения с использованием процессорного времени, поэтому, используя 3 процесса, я позволил каждому процессу использовать 1 ядро процессора). Daemontools позволил мне убедиться, что все 3 автоматически запустятся и будут работать после того, как я подключу Pi.
источник
Вот решение, которое я постоянно использую.
Создать файл рабочего стола
введите в него следующее
вставьте этот файл в
и перезапустите ваш Raspberry Pi, и он должен автоматически запустить вашу программу в новом терминале
источник
Чтобы использовать файл .py, просто поместите строку
#!/usr/bin/python
в самом начале вашего файла. Затем сделайте его исполняемым сchmod +x filename
. Затем добавьте строку/path/to/file.py &
в/etc/rc.local
доexit 0
линии (замены/path/to/file.py
с путем к вашему сценарию). Это заставит ваш скрипт на python выполняться в конце загрузки.источник
Вот еще более простой метод, который работал для меня. Изменить автозапуск в LXDE.
Откройте терминал и отредактируйте файл автозапуска следующим образом:
добавьте следующую строку текста внизу (при необходимости измените путь к месту вашего example.py)
ctr-x и сохранить. Вам может потребоваться сделать исполняемый скрипт Python следующим образом:
ссылка для автозапуска в LXDE и ссылка для создания исполняемого Python
источник
эти решения не помогли мне попробовать запустить скрипт на Python с запущенным Feh. Следующее сработало. Он запускает скрипт после входа в систему.
Откройте сеанс терминала и отредактируйте файл
sudo nano /etc/profile
Добавьте следующую строку в конец файла
/home/pi/your_script_name.sh
замените имя и путь скрипта на правильное имя и путь вашего скрипта запуска. Сохранить и выйти
Нажмите Ctrl + X, чтобы выйти из нано-редактора, затем Y, чтобы сохранить файл.
Вот как выглядел мой script.sh:
Я думаю, что сделал как script.sh, так и script.py исполняемым с помощью chmod
источник