在使用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')