Я никогда раньше не делал сервисы в linux perse, но я пытался создать сервис, используя Pi.
Я использовал 2 разных подхода для создания сервиса. Первым подходом было использование systemctl с использованием в качестве основы кода, размещенного в конце https://ubuntuforums.org/showthread.php?t=2318279. В моем случае ExecStart выглядит следующим образом:
ExecStart=/home/pi/berryconda2/bin/python /home/pi/Documents/MyCode.py
Когда я запускаю эту службу, используя sudo systemctl start MyCode.service
, она отображается как активная и работает до тех пор, пока я не выполню другую, которая живет на моем ПК, а не на Pi (они взаимодействуют друг с другом), тогда я получаю
- (код = выход, статус = 2)
- Устройство вошло в состояние отказа.
- Не удалось с результатом 'код выхода'.
Если я запускаю MyCode.py, используя мой интерпретатор python по умолчанию, мой код работает, но я хочу, чтобы pi запустил загрузку с тех пор и продолжал запускать ее до тех пор, пока я не выключу ее.
Теперь для моего второго подхода я использую шаги, описанные здесь http://blog.scphillips.com/posts/2013/07/getting-a-python-script-to-run-in-the-background-as-a-service-on-boot/. В конце, когда я запускаю свой .sh, я получаю
- активный (выход)
- (код = вышел, состояние = 0 / SUCCESS).
Как описано в следующей ссылке, я запускаю start-stop-daemon --start --pidfile /var/run/MyCode_service.pid --make-pidfile --user root --startas /home/pi/Documents/MyCode.py -- --log /var/log/MyCode_service.log
, и это работает. Я не уверен, как правильно отлаживать эти сервисы. Я посмотрел на https://freedesktop.org/software/systemd/man/systemd.exec.html#id-1.20.8 и http://manpages.ubuntu.com/manpages/cosmic/en/man8/start-stop-daemon.8.html. Но я пока не понял этого. Может ли кто-нибудь указать мне правильное направление или узнать какие-либо другие строительные блоки для оказания услуги? или хотя бы проблемы пристрелить?