Fabric 运行() 方法只处理两次

Fabric run() method handle only twice

我遇到了 Fabric 的问题,它不允许我执行两个 运行 命令。

我有 Fabric 的任务

@task
def deploy():
    run("su - user")
    run("cd /home/user/project")

并且当我 运行 一个带有 fab deploy 脚本的函数连接到服务器并且 运行 只有第一行

[34.252.47.139] run: su - user
[34.252.47.139] out: user@user.com [~]# 

在此步骤中,我使用 Ctrl+D 键终止控制台,然后我看到第二行代码执行。

所以控制台的总输出是:

[34.252.47.139] run: su - user
[34.252.47.139] out: user@user.com [~]# logout (Here I terminate a console)
[34.252.47.139] out: 

[34.252.47.139] run: cd /home/user/project

Done.
Disconnecting from 34.***.***.***... done.

考虑改用 sudo()cd() 上下文管理器。类似于:

@task
def deploy():
    with cd('/home/user/project'):
        sudo('your-command', user=user)