fabric run(sudo)运行不起作用

时间:2022-07-05 21:05:38
在使用run或者sudo运行指令,有时候会发现指令已经正常运行完毕,未有任何报错,但对应的服务并未运行。

场景1

重启apache2

sudo('service apache2 start')

指令执行后但apache2并未启动。

实际上,在执行的指令中,要将输入/输出重定向到例如log文件,都有可能会造成这个情况。

场景2

启动gfirefly服务器

with cd('/root/server'):
     sudo('python startmaster.py >> server.log')

实际上,没有启动服务器。

解决方案:

最好能更新到最新版本 pip install fabric --upgrade

1 sudo('python startmaster.py >> server.log', pty=False)
或者设置全局数据 env.always_use_pty = False
但有的系统比如CentOS6的sudo一定要有tty。

2 使用监视者模式
sudo('set -m; python startmaster.py >> server.log')