fabric执行在后台运行的命令

最近一个项目需要用30个左右的jmeter客户端来做压力测试,需要做一些部署和配置工作,这时我喜欢的Fabric就可以发挥它的力量了。其中,我希望将jmeter施压段放到后台去运行,最开始将“nohup xxx &”放到fabric的run()中执行时,却没有执行;后来看了下文档,并做了些实验。

对于直接使用“&”放到后台执行的情况,Fabric推荐使用如下3种情况来替代(按鲁棒性从高到低排列):
1.使用已经存在daemon技术,如init、supervisord、upstart、systemd等,例如:/etc/init.d/tomcat restart 这样的命令,另外supervisord我也是很喜欢的。
2.使用screen、tmux、dtach等工具来从当前shell中detach进程。如:screen -d -m sleep 10 这样的命令。注:要设置pty=False,如 run(‘screen -d -m sleep 10’, pty=False)。
3.使用nohup,不过确实如官方文档所说只有部分用户能成功,我用nohup在run()中时就遇到了问题后该用screen了。

共享一个前几天写的jmeter相关的fabfile吧: https://github.com/smilejay/python/blob/master/py2015/unified_order_fabfile.py

参考文档:http://fabric.readthedocs.org/en/1.6/faq.html

master

Stay hungry, stay foolish.

发表评论

电子邮件地址不会被公开。 必填项已用*标注