因此,我有一个在Pi(Jessie)上运行的TCP服务器,接受诸如“ START”,“ STOP”,“ QUIT”和“ REBOOT”之类的命令,并对它们进行操作。例如,“ START”打开一个脚本(一个发布到Thingsboard的模块),而“ STOP”则终止该脚本。
我使用subprocess
打开一个新的GNOME-Terminal
窗口,并将我的脚本作为启动时的子进程。 STOP只是杀死(pkill
)这个脚本。
在收到命令后,服务器将回复客户端“收到XYZ”,因为Pi最终将无头运行。
在Pi上手动运行所有这些功能时,一切都很好。
在使用systemd引导时自动运行同一TCP服务器时(因此在后台),将发生以下情况: 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!
期待您的想法...谢谢!