python fabric如何在远程机器上启动进程

时间:2015-11-30 06:19:52

标签: python linux fabric

所有    我正在使用fabric来部署我的python作业。 python项目包含一个名为'run_fetchserver.sh'的shell来控制进程的启动/停止。

fetch_path=$PROJECT_PATH
if [ $1 = start ]
then
    psid=`ps aux | grep "fetch_server" | grep -v "grep" | wc -l`
    if [ $psid -gt 1 ]
        then
        echo "fetchserver is running!"
        exit 0
    else
        pushd $fetch_path
            nohup python fetch_server.py >>start_fetchserver.log 2>&1 &
        popd
        echo "Start fetchserver service [OK]"
    fi
elif [ $1 = stop ];then
    pkill -f "fetch_server.py"
    echo "Stop fetch service [OK]"
elif [ $1 = restart ];then
    pkill -f "fetch_server.py"
    pushd $fetch_path
        nohup python fetch_server.py >>start_fetchserver.log 2>&1 &
    popd
    echo "Restart fetchserver service [OK]"
else
    echo "Usages: sh fetchserver server.sh [start|stop|restart]"
fi

这个脚本在本地运行良好,但是当我用fabric命令调用它时     run('./ run_fetchserver.sh restart') 根本没有在远程计算机上启动作业。为什么呢?

1 个答案:

答案 0 :(得分:0)

问题最终得到解决。

我在fabfile.py中只更改了一行:

run('./run_fetchserver.sh restart') 

run('./run_fetchserver.sh restart', pty=False)

因此程序在远程机器上成功启动。