我需要在远程服务器上运行python脚本中的一个命令。(可能需要几分钟),并写入一个新的文件与翻译translated_file
.接下来,我需要复制翻译文件到文件夹translations
.然而,subprocess.run()
不等待命令完成,当它试图复制,这是一个错误,因为该文件不存在。
这是一个脚本:
subprocess.run(["ssh", "remote-server", "-f", "python", "-m", "sockeye.translate", "--models", "translation-model", "--input", "input_file", "--output", "translated_file"])
subprocess.run(["ssh", "remote-server", "-f", "cp", "translated_file", "translations"])
我认为这与ssh
有关,因为当我尝试直接在远程服务器上执行相同的操作时,subprocess.run()
会等待转换完成。在远程服务器上,我使用了相同的命令,只是删除了ssh
远程服务器,如下所示:
subprocess.run(["python", "-m", "sockeye.translate", "--models", "translaiton-model", "--input", "input_file", "--output", "translated_file"])
subprocess.run(["cp", "translated_file", "translations"])
如何让subprocess.run()
等待?或者有更好的方法在远程运行命令吗?
1条答案
按热度按时间f0brbegy1#
您正在使用
-f
选项运行ssh
。请尝试删除-f
选项。该选项会导致ssh
在身份验证后开始在后台运行。您不希望这样做,因为您希望等待每个ssh
调用完成。请参阅此处的选项说明:
我操
**在命令执行前请求ssh转到后台。**如果ssh要询问密码或密码短语,但用户希望它在后台,这很有用。这意味着-n。在远程站点启动X11程序的推荐方法是使用ssh -f host xterm。