我已经google了很多,并且在面料常见问题中也说使用屏幕dtach,但是没有找到如何实现它? 下面是我的错误代码,sh不会执行,因为它是一个nohup任务
def dispatch():
run("cd /export/workspace/build/ && if [ -f spider-fetcher.zip ];then mv spider-fetcher.zip spider-fetcher.zip.bak;fi")
put("/root/build/spider-fetcher.zip","/export/workspace/build/")
run("cd /export/script/ && sh ./restartCrawl.sh && echo 'finished'")
答案 0 :(得分:6)
我设法分两步完成:
以分离模式在远程服务器上启动tmux会话:
run(“tmux new -d -s foo”)
将命令发送到分离的tmux会话:
run(“tmux send -t foo.0 ls ENTER”)
这里'-t'确定目标会话('foo'),'foo.0'告诉你 'ls'命令执行窗格的编号。
答案 1 :(得分:2)
您可以在屏幕前添加您要运行的命令: run(“屏幕长时间运行命令”)
Fabric虽然没有像期望的那样保持状态,因为每个run / sudo / etc都是他们自己的sperate命令在不知道最后一个命令的状态的情况下运行。例如run(“cd / var”); run(“pwd”)将不会打印/ var,而是已登录到该框的用户的主目录。