如何使用dtach,屏幕使用面料,是否有一些例子

时间:2012-02-22 10:50:41

标签: python fabric

我已经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'")

2 个答案:

答案 0 :(得分:6)

我设法分两步完成:

  1. 以分离模式在远程服务器上启动tmux会话:

      

    run(“tmux new -d -s foo”)

  2. 将命令发送到分离的tmux会话:

      

    run(“tmux send -t foo.0 ls ENTER”)

  3. 这里'-t'确定目标会话('foo'),'foo.0'告诉你 'ls'命令执行窗格的编号。

答案 1 :(得分:2)

您可以在屏幕前添加您要运行的命令:     run(“屏幕长时间运行命令”)

Fabric虽然没有像期望的那样保持状态,因为每个run / sudo / etc都是他们自己的sperate命令在不知道最后一个命令的状态的情况下运行。例如run(“cd / var”); run(“pwd”)将不会打印/ var,而是已登录到该框的用户的主目录。