Сценарии запуска при загрузке Raspi передний план против фона - PullRequest
0 голосов
/ 11 января 2019

Итак, у меня есть TCP-сервер, работающий на Pi (Jessie), принимающий такие команды, как «START», «STOP», «QUIT» и «REBOOT», и действующий в соответствии с ними. Например, «START» открывает скрипт (модуль, который отправляет сообщения в Thingsboard), а «STOP» убивает этот скрипт.

Я использую subprocess, чтобы открыть новое окно GNOME-Terminal с моим сценарием в качестве дочернего процесса при запуске. STOP просто убивает (pkill) этот скрипт.

После получения команд сервер отвечает клиенту "XYZ полученный", так как в конце Pi должен работать без головы.

Когда все это выполняется вручную на Pi, все хорошо, как и предполагалось.

При автоматическом запуске того же TCP-сервера при загрузке с помощью systemd (в фоновом режиме) происходит следующее: 1) запускается нормально (статус = активен и работает), и 2) принимает, принимает и подтверждает получение команд, но 3) он не открывает GNOME-терминал (с подпроцессом)!

Я не понимаю, почему TCP-сервер работает нормально, но, похоже, не выполняет subprocess.call?!

Вот часть кода ...

    while True:
        data = connection.recv(1024)
        print " Received %s" % data

        if data == "START":
            connection.sendall("START received")     >> WORKS FINE!
            subprocess.call(['gnome-terminal', '-e', 'sudo python /home/pi/3DT/final_nova2.py'])        >> DOESN'T HAPPEN!

С нетерпением жду ваших мыслей ... Спасибо!

...