我想通过 ssh 在远程计算机上从一个 python 程序启动另一个 python“Server.py”程序。
该程序通过以下方式在 bash shell 中本地启动:
nohup ./Server.py 1>Server.log 2>&1 &
没有任何问题。为了完整起见,Server.log 显示:
nohup: ignoring input
即使我关闭 bash-shell,进程也能正常运行:
pi 26119 1 0 20:15 ? 00:00:00 /home/pi/.pyenv/versions/3.11.4/bin/python ./Server.py
如果尝试通过以下方式远程启动它:
cmd = ["ssh", target, "nohup "+ Conf.FILES[0] + " 1>./Server.log 2>&1 &"]
print("cmd=", cmd)
try:
result = subprocess.run(cmd, capture_output=True, check=True, text=True).stdout[:-1]
远程进程以 print 语句开始,等于:
cmd= ['ssh', '<MyInternetServerName>', 'nohup ./Server.py 1>./Server.log 2&1 &']
但我收到意外的 Python 错误(在 Server.log 中):
File "./Server.py", line 102
def handle_client(self, connfd: socket.socket):
^
SyntaxError: invalid syntax
我认为,我在远程做与本地相同的事情,但我找不到我的错。 有什么想法,为什么会失败或者要检查什么?