Python Can';不要买布料';s分离的屏幕会话示例可以正常工作

Python Can';不要买布料';s分离的屏幕会话示例可以正常工作,python,fabric,Python,Fabric,我正在尝试使用分离的屏幕会话在远程主机上执行脚本。我试过了,但不幸的是没能成功 from fabric.api import run def yes(): run('screen -d -m "yes"') 在我的本地计算机上执行fab yes会将其正确连接到远程主机,并表示命令已运行,但在远程主机上没有执行任何操作。在任一机器上尝试screen-d-m“yes”都能正常工作 如果有人能指出我做错了什么,我将不胜感激。另外,另一方面,为什么命令中的yes后面有引号?如果没有报价,它会

我正在尝试使用分离的屏幕会话在远程主机上执行脚本。我试过了,但不幸的是没能成功

from fabric.api import run

def yes():
    run('screen -d -m "yes"')
在我的本地计算机上执行
fab yes
会将其正确连接到远程主机,并表示命令已运行,但在远程主机上没有执行任何操作。在任一机器上尝试
screen-d-m“yes”
都能正常工作

如果有人能指出我做错了什么,我将不胜感激。另外,另一方面,为什么命令中的yes后面有引号?如果没有报价,它会起作用吗?谢谢

运行('screen-d-m yes;sleep 1')
工作正常


不确定是织物还是屏风导致了这种行为。

虽然AVB的答案很完美,但我会添加一个小提示,可以帮助像我这样的人。如果要运行多个命令,请将它们放在可执行文件中

这是行不通的:

run('screen-d-m./ENV/bin/activate;python run.py;sleep 1“)

因此,请创建run.sh文件:

#!/bin/bash
source ENV/bin/activate
python run.py
然后像运行一样使用它('screen-d-m./run.sh;sleep 1')

像这样使用它:

run('sudo screen -d -m python app.py && sleep 1', pty=True) 

screen -d -m 

启动以断开连接模式启动的会话

为什么“睡眠1;”在那里?欢迎使用Stackoverflow。请解释你的答案,以便其他人容易理解。