Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Запуск скрипта на python при загрузке  (Прочитано 5516 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vtimofeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Добрый день!

понимаю что тема старая и много прочитал но собрать воедино не получилось. Прошу прощения за повторения.
Есть скрипт на pythoн.  Его параметры строки запуска записаны в .sh файл.
Необходимо чтобы система запускала скрипт при запуске компьютера после запуска сетевых интерфейсов. Без входа в систему под пользователем. Если бы еще можно к нему по ssh подключаться для остановки, запуска, перезапуска.
Помогите плиз

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #1 : 26 Июнь 2019, 22:46:35 »
Система с systemd ? Тогда в гугл:
Цитировать
systemd unit after network
« Последнее редактирование: 01 Июль 2019, 08:25:58 от Azure »

Оффлайн vtimofeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #2 : 30 Июнь 2019, 23:24:42 »
Спасибо
медленно втыкаюсь
еще б понять как передать Ctrl-C для прерывания скрипта....
да и как правильно выбрать что кроме сети уже должно быть инициированно
Спасибо

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27660
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #3 : 30 Июнь 2019, 23:43:30 »
понять как передать Ctrl-C для прерывания скрипта....
Никак.
man 7 signal
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4708
  • Capture the truth
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #4 : 01 Июль 2019, 00:19:50 »
vtimofeev, разбирайтесь c systemd - это несложно. Там и старт, и стоп, и таймеры, и много вкусного.

Пользователь добавил сообщение 01 Июль 2019, 00:23:33:
https://help.ubuntu.ru/wiki/systemd
https://wiki.archlinux.org/index.php/Systemd_(Русский)
https://habr.com/ru/company/southbridge/blog/255845/
https://www.freedesktop.org/software/systemd/man/systemd.unit.html
« Последнее редактирование: 01 Июль 2019, 02:27:48 от ALiEN175 »
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн vtimofeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #5 : 01 Июль 2019, 02:16:46 »
Добрый день
в принципе все понятнее и понятнее, но:
Код: (html5) [Выделить]
[Service]
ExecStart=/home/me/code/start_detector.sh

при этом сам start_detector.sh:
Код: (html5) [Выделить]
#!/usr/bin/env bash
/opt/intel/openvino/bin/setupvars.sh
/usr/bin/python3.5 /home/me/code/detect.py -i d3.ini


но не могу понять (((( при запуске скрипта на python дополнительно перед этим инициализируются переменные OpenVINO в отдельном sh файле. Но скрипт на python этого не видит
« Последнее редактирование: 01 Июль 2019, 08:23:16 от Azure »

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4708
  • Capture the truth
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #6 : 01 Июль 2019, 02:31:44 »
покажите
python3.5 --help | egrep -A3 '^\-i'
ЗЫ у меня 3.7 - там опция -i имеет несколько иное значение (или нет) (?)
« Последнее редактирование: 01 Июль 2019, 02:33:49 от ALiEN175 »
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн vtimofeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #7 : 01 Июль 2019, 02:34:34 »
ALiEN175, Тут опция имеет отношение уже к скрипту а не к питону и скрипт ее обрабатывает

Пользователь добавил сообщение 01 Июль 2019, 02:39:07:
Код: (html5) [Выделить]
python3.5 --help | egrep -A3 '^\-i'
-i     : inspect interactively after running script; forces a prompt even
         if stdin does not appear to be a terminal; also PYTHONINSPECT=x
-I     : isolate Python from the user's environment (implies -E and -s)
-m mod : run library module as a script (terminates option list)
« Последнее редактирование: 01 Июль 2019, 08:24:17 от Azure »

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4708
  • Capture the truth
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #8 : 01 Июль 2019, 03:08:01 »
export DISPLAY=:0добавьте в начало скрипта.
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн vtimofeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #9 : 01 Июль 2019, 08:51:52 »
не сработало
в sh добавил но переменные не увидела
Код: (html5) [Выделить]
#!/usr/bin/env bash
export DISPLAY=:0
/opt/intel/openvino/bin/setupvars.sh
/usr/bin/python3.5 /home/me/code/detector.py

● food.service - Vididet
   Loaded: loaded (/etc/systemd/system/food.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Пн 2019-07-01 08:48:53 MSK; 1s ago
  Process: 3667 ExecStart=/home/me/code/start_fdetector.sh (code=exited, status=1/FAILURE)
 Main PID: 3667 (code=exited, status=1/FAILURE)

июл 01 08:48:53 imtmm systemd[1]: Started Vididet.
июл 01 08:48:53 imtmm start_fdetector.sh[3667]: [setupvars.sh] OpenVINO environment initialized
июл 01 08:48:53 imtmm start_fdetector.sh[3667]: start detecting
июл 01 08:48:53 imtmm start_fdetector.sh[3667]: Traceback (most recent call last):
июл 01 08:48:53 imtmm start_fdetector.sh[3667]:   File "/home/me/code/detector.py", line 9, in <module>
июл 01 08:48:53 imtmm start_fdetector.sh[3667]:     import cv2
июл 01 08:48:53 imtmm start_fdetector.sh[3667]: ImportError: No module named 'cv2'
июл 01 08:48:53 imtmm systemd[1]: food.service: Main process exited, code=exited, status=1/FAILURE
июл 01 08:48:53 imtmm systemd[1]: food.service: Unit entered failed state.
июл 01 08:48:53 imtmm systemd[1]: food.service: Failed with result 'exit-code'.

так как стоит openVINO то cv2 берется из спец папки а не из стандартного репозитария, для чего и грузятся переменные. видно из лога что они прогружаются но не работают(

программа имеет сугубо терминыльный вывод но до него и не доходит
« Последнее редактирование: 01 Июль 2019, 11:58:18 от Azure »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27660
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #10 : 01 Июль 2019, 09:14:19 »
перед этим инициализируются переменные OpenVINO в отдельном sh файле. Но скрипт на python этого не видит
Потому что они в отдельном файле. Всё, что сделано в отдельном процессе, остаётся в отдельном процессе. Вам надо прочесть файл в этом же процессе - `source /opt/intel/openvino/bin/setupvars.sh`. Плюс сделать export всех переменных, которые должен видеть питон.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн zg_nico

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #11 : 01 Июль 2019, 10:17:37 »
vtimofeev, следует понимать при этом, что когда Вы в системе запускает скрипт от себя - он выполняется в Вашем пользовательском окружении (whoami введите и поймёте о чем я), а всё что запускает systemd, если я не ошибаюсь, выполняется от имени root. В этом еще может быть затык. Сам скрипт на питоне требует привеллегий root? Если его от root запустить - он нормально работает? В логе вроде как ругань на модули. Если модули ставились для пользователя - питон под рутом может их не найти (не претендую на 100% достоверность, т.к. не шибко шарю в теме). В той же мере эти вопросы относятся и к setupvars.sh. Копните с этой стороны, - может что прояснится.
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн vtimofeev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #12 : 01 Июль 2019, 20:08:28 »
Огромное спасибо всем, проблема решена.

Оффлайн victor00000

  • Забанен
  • Старожил
  • *
  • Сообщений: 15570
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #13 : 01 Июль 2019, 20:41:37 »
Цитировать
загрузка
не нужно для pythin и php, perl д.р.
Нельзя друзья, дулу - AnrDaemon видите?
~.o

Оффлайн zg_nico

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Запуск скрипта на python при загрузке
« Ответ #14 : 02 Июль 2019, 15:36:41 »
vtimofeev, что было-то хоть по итогу? Вдруг у кого-то будет похожая беда - из топика на момент не ясно каким образом одолели проблему. Не сочтите за труд, поделитесь знанием с сообществом, пожалуйста :)
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

 

Страница сгенерирована за 0.13 секунд. Запросов: 25.