Запуск скрипта py в качестве сервиса и взаимодействие через ssh. tmux или экран?

Я хотел бы запустить скрипт python, который регистрирует поток nmea GPS от UART для гудения. И я хочу видеть, что мои сценарии выводятся в терминал. Скрипт начинается с полной настройки:

/etc/systemd/system/gps_log.service

[Unit] 
Description=Startup Script Service
After=multi-user.target 

[Service]
Type=idle
ExecStart=/home/pi/serial_nmealog.sh
WorkingDirectory=/home/pi
User=pi

[Install]
WantedBy=multi-user.target

/home/pi/serial_nmealog.sh:

#!/bin/sh
sleep 10
sudo python3 serial_nmealog.py

Теперь я хочу создать новый терминал с экраном или tmux, чтобы посмотреть, что делает мой скрипт. Я использую следующую строку в файле serial_nmealog.sh:

sudo screen -dmS gpslog python3 serial_nmealog.py

или

sudo tmux new -s gpslog python3 serial_nmealog.py

Но служба всегда останавливается. Когда я набираю sudo systemctl status gps_log.service, я получаю:

для sudo screen -dmS gpslog python3 serial_nmealog.py в serial_nmealog.sh

● gps_log.service - Startup Script Service
   Loaded: loaded (/etc/systemd/system/gps_log.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sun 2018-03-04 11:42:12 UTC; 1min 37s ago
  Process: 1373 ExecStart=/home/pi/serial_nmealog.sh (code=exited, status=0/SUCCESS)
 Main PID: 1373 (code=exited, status=0/SUCCESS)

Mar 04 11:42:01 raspberrypi systemd[1]: Started Startup Script Service.
Mar 04 11:42:12 raspberrypi sudo[1378]:       pi : TTY=unknown ; PWD=/home/pi ; USER=root ; COMMAND=/usr/bin/screen -dmS gpslog python3 serial_nmealog.py
Mar 04 11:42:12 raspberrypi sudo[1378]: pam_unix(sudo:session): session opened for user root by (uid=0)
Mar 04 11:42:12 raspberrypi sudo[1378]: pam_unix(sudo:session): session closed for user root

для sudo tmux new -s gpslog python3 serial_nmealog.py в serial_nmealog.sh

● gps_log.service - Startup Script Service
   Loaded: loaded (/etc/systemd/system/gps_log.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sun 2018-03-04 11:24:17 UTC; 1s ago
  Process: 1227 ExecStart=/home/pi/serial_nmealog.sh (code=exited, status=0/SUCCESS)
 Main PID: 1227 (code=exited, status=0/SUCCESS)

Mar 04 11:24:07 raspberrypi systemd[1]: Started Startup Script Service.
Mar 04 11:24:17 raspberrypi sudo[1241]:       pi : TTY=unknown ; PWD=/home/pi ; USER=root ; COMMAND=/usr/bin/tmux new-session -s pi -d gpslog python3 serial_nmea
Mar 04 11:24:17 raspberrypi sudo[1241]: pam_unix(sudo:session): session opened for user root by (uid=0)
Mar 04 11:24:17 raspberrypi sudo[1241]: pam_unix(sudo:session): session closed for user root

Я также пытался сделать это с помощью rc.local при запуске. Но это не работает. Что мне не хватает, и как я могу сделать возможным создание нового сеанса терминала, с которым я могу взаимодействовать через ssh?

4 голоса | спросил Hans Jürgen 4 MarpmSun, 04 Mar 2018 14:49:14 +03002018-03-04T14:49:14+03:0002 2018, 14:49:14

1 ответ


3

Измените /home/pi/serial_nmealog.py, чтобы он регистрировался в syslog. Вы можете настроить syslog, чтобы serial_nmealog имел свой собственный файл журнала, если хотите. Затем вы можете связать с ssh и tail этот файл журнала. Невозможно «взаимодействовать» с serial_nmealog.py, если только он сам не сделал этого.

Кстати, я думаю, вы можете смело отказаться от sudo из /home/pi/serial_nmealog.sh, насколько я вижу, вы уже root.

ответил Gerard H. Pille 4 MarpmSun, 04 Mar 2018 17:45:16 +03002018-03-04T17:45:16+03:0005 2018, 17:45:16

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132