Системный сторожевой таймер запускает программу через скрипт - PullRequest
0 голосов
/ 10 октября 2018

У меня есть этот код Python, который мне нужно запустить, используя systemd, и следить за его зависанием.Проблема в том, что когда я запускаю скрипт python непосредственно из systemd, он работает нормально.Однако, когда скрипт python запускается из другого сценария оболочки, который запускается из моей службы systemd, он говорит:

sdping_py.service: Got notification message from PID 6828, but reception only permitted for main PID 6768

Проблема заключается в том, что сценарий python выполняется как дочерний процесс сценария оболочки и службы systemd.ожидание уведомлений от сценария оболочки, который является основным процессом для службы.Как я могу обойти это?Мое приложение строго должно быть запущено из сценария оболочки.

Вот код Python, который я пробовал,

import sdnotify, time

n = sdnotify.SystemdNotifier()
print("Gonna start")
time.sleep(2)
print("Started!")

n.notify("READY=1")
i=0
while True:
    print(i)
    time.sleep(1)
    n.notify("WATCHDOG=1")
    i+=1

Это мой служебный файл

[Unit]
Description=Test watchdog Demo process
DefaultDependencies=false
Requires=basic.target

[Service]
Type=notify
WatchdogSec=2
ExecStart=/home/teshanl/sdping/scripts/sdping_py.sh
#ExecStart=/usr/bin/python /home/teshanl/sdping/src/sdping_pub.py
StartLimitInterval=5min
StartLimitBurst=5
#StartLimitAction=reboot
Restart=always

И этоэто файл оболочки

#!/bin/bash

/usr/bin/python /home/teshanl/sdping/src/sdping_pub.py

РЕДАКТИРОВАТЬ:

Благодаря @georgexsh, добавление exec в команду оболочки частично решило мою проблему.Мой новый вопрос: как мне сделать то же самое с командой roslaunch?Узел ROS должен отправлять уведомление пульса службе systemd.roslaunch запускает узлы с отдельными PID, очевидно,

1 Ответ

0 голосов
/ 10 октября 2018

используйте exec, чтобы заменить процесс bash на процесс Python:

exec /usr/bin/python ...

или установите NotifyAccess на all, чтобы разрешить отправку разветвленного дочернего процесса Pythonsd сообщение, см. в этой теме .

...