Доброго времени суток всем!
В линуксе я новичек, чайник так сказать.
Прикупил распберри и собрал в корпусе инет-радиоприемничек.
Есть скрипт на python играющий радио и показывающий инфу о проигрываемом на lcd дисплейчике.
Скрипт через консоль запускаю так
Sudo python /home/pi/myprog/radio.py
Все работает, но хотелось бы чтобы этот скрипт запускался сам при включении распберри пи.
Помогите советом как это сделать плиз
svsdval Posts: 133 Joined: Fri Jan 18, 2013 5:12 pm Location: Russia->Siberia->Altayskiy Kray->Biysk
Re: скрипт python в автозапуск
Все работает, но хотелось бы чтобы этот скрипт запускался сам при включении распберри пи.
Помогите советом как это сделать плиз[/quote]
Есть несколько способов поставить в автозагрузку на выбор:
1.Если у тебя стартуют иксы то тогда проще в /etc/xdg/autostart создать выражаясь терминологиями M$ ярлык на файлик
[Desktop Entry] Version=1.0 Encoding=UTF-8 Name=ИМЯ Comment= Exec=Чего выполнить Terminal=false Type=Application
2.Прописать в /etc/rc.local
/home/user/some-prog 1 > /dev/null 2 > /dev/null
my:12345:once:/home/user/some-prog
12345 — список рунлевелов, once заменить на boot будет запускаться раз
Автозапуск программ на python
4.Как демона (написать скрипт или просто ссыль)
ln -s /home/user/some-prog /etc/init.d rcconf
(если нет, sudo apt-get install rcconf)
5. Прописать в ..bashrc
это часто используемые
Debian/Blender/Gimp/Inkscape/Lmms/Fpc/Gcc crazy user
whdoc Posts: 3 Joined: Tue Jun 11, 2013 5:12 am
Re: скрипт python в автозапуск
Спасибо за ответ, но я не очень понял, потому что чайник.
Можно подробно что куда и как вводить и писать?
Т.е. открой такой то файл такой то командой, напиши то то..
Дело для меня новое
svsdval Posts: 133 Joined: Fri Jan 18, 2013 5:12 pm Location: Russia->Siberia->Altayskiy Kray->Biysk
Re: скрипт python в автозапуск
запускай gksudo leafpad /etc/xdg/autostart/radio.desktop
в него пишешь:
[Desktop Entry] Version=1.0 Encoding=UTF-8 Name=Radio Comment= Exec=sudo python /home/pi/myprog/radio.py Terminal=false Type=Application
Debian/Blender/Gimp/Inkscape/Lmms/Fpc/Gcc crazy user
whdoc Posts: 3 Joined: Tue Jun 11, 2013 5:12 am
Re: скрипт python в автозапуск
Спасибо тебе добрый человек
помогло, заработало )))
andreus7 Posts: 5 Joined: Mon Jun 23, 2014 5:10 am
Re: скрипт python в автозапуск
Друзья, прошу помочь!
Пишу скрипт на python, использована предложенном решение, прописал его в автозапуск. Проблема в том, что я не использую GUI и стартует оболочка только после ввода startx, а мой скрипт почему-то не хочет работать до запуска GUI.
Подскажите пожалуйста, куда мне копать?
LKA Posts: 189 Joined: Thu Jul 11, 2013 1:20 pm
Re: скрипт python в автозапуск
а че надо откопать-то?)
andreus7 Posts: 5 Joined: Mon Jun 23, 2014 5:10 am
Re: скрипт python в автозапуск
Нужно, чтобы скрипт запускался при загрузке малинки, не дожидаясь запуска GUI.
Как сделать автозапуск программ на Python по расписанию
Я новичек и в линуксе и в пайтоне, и не понимаю, почему моя программа работает только после ввода startx в консоли.
LKA Posts: 189 Joined: Thu Jul 11, 2013 1:20 pm
Re: скрипт python в автозапуск
Добро пожаловать в линукс)
При надобности, в линуксе можно управлять последовательностью автозагрузки.
Для этого нужно прописать свой скрипт в загрузку командой:
sudo update-rc.d имя_скрипта defaults
А можно тупо по старинке прописать свой скрипт в /etc/rc.local перед «exit 0»
Если пусть нестандартный, то прописывать полностью.
А файлы «имя.desktop» с прописанным в нутри «Exec=/путь/мой_скрипт» в ~/.config/autostart
запускаются десктопным менеджером, в данном случае LXDE, у openbox-a другая система автостарта.
andreus7 Posts: 5 Joined: Mon Jun 23, 2014 5:10 am
Re: скрипт python в автозапуск
Спасибо за информацию.
Опробовать смогу завтра вечером.
andreus7 Posts: 5 Joined: Mon Jun 23, 2014 5:10 am
Re: скрипт python в автозапуск
К сожалению, пока не решил свою проблему. Вернее, обнаружил ее причину, но как решать — не знаю:(
Я прописал программу в автозагрузку, но она не стала запускаться, ругаясь на невозможность загрузки некоторых модулей (см. скрин: https://yadi.sk/i/fZkOreh3Vsmfn )
Подскажите пожалуйста, что я делаю не так?
LKA Posts: 189 Joined: Thu Jul 11, 2013 1:20 pm
Re: скрипт python в автозапуск
какие-то ошибки внутри самого clientupdate.py
я в питоне ноль, по опыту могу сказать, что если копипастили откуда-то, то вытрите лишние табы, нечитаемые символы и виндовые переносы строки.
andreus7 Posts: 5 Joined: Mon Jun 23, 2014 5:10 am
Re: скрипт python в автозапуск
Спасибо всем за Ваши советы!
Проблема крылась где-то в недрах моей программы — так я и не понял где. Скорее всего это действительно какие-то артефакты в коде.
Запустить программу без компилятора так и не получилось, а вот новый скрипт с одной строкой вызова моей основной программы система приняла. Т. ч. все заработало!
Помимо этого, Вы помогли мне немного разобраться в линухе, дав направление, где мне копать. Еще раз спасибо Вам всем за Вашу помощь!
Sandalex001 Posts: 2 Joined: Thu Dec 27, 2018 8:10 am
Re: скрипт python в автозапуск
Всем доброго времени суток!
Пишу небольшой скрипт на python, с котором хотелось бы общаться через терминал. Затем добавил его в автозагрузку.
При запуске Raspbian после запуска рабочего стола мой скрипт выполняется 2 раза подряд (есть запись в log файле). Причем при первом запуске он не открывает терминал, а при втором запуске- открывает терминал.
Здесь привел условный пример скрипта, загружающий одно ядро на 100%
С raspberry работаю через VNC терминал. Если послать команду CTRL+ALT+DEL, то в списке процессов есть 2 Команды: python, каждый с загрузкой системы по 25%, что логично с учётом скрипта
Собственно вопрос: почему так происходит и как сделать что-бы скрипт запускался один раз?
Как сделал автозапуск:
cd /home/pi/.config mkdir autostart cd autostart sudo nano myscript2.desktop [Desktop Entry] Type=Application Name=MyScript2 Exec=lxterminal -e python /home/pi/myscript2.py StartupNotify=false
myscript2.py
#!/usr/bin/env python import sys import time tek_time=str( time.time() ) print (sys.version) print (‘My Script #2’) print (‘Tek_time=’+tek_time) f=open(‘1.log’,’a’) f.write(‘2-‘) f.write(sys.version) f.write(‘time=’+tek_time); f.close() i=0; while 1: print (i); i=i+1; for j in range(0,1000000) a=0
02-2.7.13 (default, Sep 26 2018, 18:42:22) [GCC 6.3.0 20170516]time=1542136670.61 2-2.7.13 (default, Sep 26 2018, 18:42:22) [GCC 6.3.0 20170516]time=1542136670.84
Источник: forums.raspberrypi.com
Guides Book
Осуществить данную задачу можно двумя путями, первый состоит в том, чтобы записать значение в реестр (HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun), здесь подробно описан данный метод. Однако при этом нам будет необходимо разрешение на запись в реестр, и чтобы его получить придется постараться.
Второй путь проще и не требует особых привилегий программе, для этого необходимо создать ярлык программы в C:UsersUserNameAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup (путь для Windows 7).
Ниже показан код, позволяющий это сделать, при этом создается ярлык на исполняемый файл и сохраняется в выше указанную папку, и при желании его от туда можно убрать.
import winshell
import os
import sys
def set_startup():
try:
# get path and file name for application
startFile = os.path.abspath(sys.argv[0])
# get startup folder
startup=winshell.startup()
# create shortcut in startup folder
winshell.CreateShortcut (
Path=os.path.join (startup, «application.lnk»),
Target=startFile,
Icon=(startFile, 0),
Description=»My application»,
StartIn=os.path.abspath(None)
)
except :
pass
def remove_startup():
try:
startup=winshell.startup()
# remove shortcut from startup folder
if os.path.isfile(startup + ‘\application.lnk’):
os.remove(startup + ‘\application.lnk’)
except :
pass
В коде использован пакет winshell, позволяющий получать доступ к специальным папкам Windows.
Источник: guidesbook.blogspot.com
Автозапуск python скрипта на Raspberry Pi.
Сегодня будет статья / заметка / ответ на часто задаваемый вопрос. Итак, кратчайшая предыстория. На нашем форуме был опубликован вопрос по поводу автозапуска скрипта при включении Raspberry. И внезапно пришло осознание, что вопрос этот возникает достаточно часто, так, почему бы, собственно, не оформить ответ на него более глобально. То есть в виде заметки на основном сайте.
Так что, переходим к разбору, как выполнить автозапуск python скрипта на Raspberry Pi.
- Вариант 1. Автозапуск скрипта через /etc/profile
- Вариант 2. Автозапуск скрипта через /etc/rc.local
Итак, способы решения поставленной задачи многообразны и разнообразны. Разберем несколько из них, может пару-тройку. Кстати любые комментарии по данной теме крайне приветствуются — другие варианты, плюсы/минусы, идеи, вопросы )
Создаем подопытный скрипт на python’е — script.py. Что он будет делать в данном случае вообще не важно, я возьму тестовый скрипт с ШИМ:
import RPi.GPIO as GPIO import time GPIO_PWM_0 = 12 WORK_TIME = 300 DUTY_CYCLE = 50 FREQUENCY = 100 print(‘script execution begins’) GPIO.setmode(GPIO.BCM) GPIO.setup(GPIO_PWM_0, GPIO.OUT) pwmOutput_0 = GPIO.PWM(GPIO_PWM_0, FREQUENCY) pwmOutput_0.start(DUTY_CYCLE) time.sleep(WORK_TIME) pwmOutput_0.stop() pwmOutput_1.stop() GPIO.cleanup() print(‘script execution ends’)
Останавливаться на его работе не будем, в общем-то в статье про ШИМ все это есть. Физически файл у меня находится в:
/home/pi/PythonScripts/
Для запуска скрипта соответственно:
sudo python /home/pi/PythonScripts/script.py
Переходим к сути дела — автозапуску.
Вариант 1. Автозапуск скрипта через /etc/profile.
При запуске оболочки bash последняя использует набор стандартизированных файлов для создания окружения. К этим файлам относится и /etc/profile. Мы под шумок можем поместить в этот файл дополнительную команду, выполняющую запуск нашего скрипта. Открываем файл в редакторе:
sudo nano /etc/profile
И добавляем в конец файла строку:
sudo python /home/pi/PythonScripts/script.py
Сохраняем файл, закрываем — на этом все, задача решена. Но тут необходимо упомянуть два дополнительных нюанса.
Первый связан с тем, что в соответствии с механизмом, который мы использовали, команда будет выполняться каждый раз при запуске bash в интерактивном режиме. То есть, в частности, при запуске терминала, либо при подключении к плате по SSH. Скрипт в данных случаях будет запускаться каждый раз. Дальше уже нужно смотреть по конкретной цели — нужно это или нет.
Второй нюанс заключается в том, что работать с командной строкой можно будет лишь по окончанию выполнения скрипта. И если скрипт, например, содержит бесконечный цикл, либо операции, требующие некоторого времени, то в конце команды нужно добавить амперсанд —
Эта модификация приведет к выполнению команды в отдельном потоке, что решает обозначенную выше проблему.
Вариант 2. Автозапуск скрипта через /etc/rc.local.
В данном случае команда, добавленная в этот файл, будет выполняться уже однократно — при запуске ОС (т. е. при включении платы). Сам процесс организации автозапуска по сути идентичен, открываем файл для редактирования:
sudo nano /etc/rc.local
И в конце файла, но(!) перед «exit 0» добавляем запуск скрипта:
sudo python /home/pi/PythonScripts/script.py в конце строки — причина его использования все в том же — обеспечить выполнение скрипта в отдельном потоке. В данном случае это еще более важно. Поскольку команды из rc.local будут выполняться в процессе загрузки системы, то запуск пользовательского скрипта с бесконечным циклом приведет попросту к тому, что система не стартанет. Так что бдительность и внимательность
По той же причине, что скрипт будет выполняться при загрузке системы, получить обратную связь от него проблематично. И если там будет ошибка, и ОС не запустится, то поиск этой ошибки может стать непростой задачей. К счастью, очень просто организовать логирование выполнения скрипта. Для этого модифицируем команду запуска:
sudo python /home/pi/PythonScripts/script.py /home/pi/PythonScripts/script_log.txt 2>#129309;
Источник: microtechnics.ru