所有 我正在使用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') 根本没有在远程计算机上启动作业。为什么呢?
答案 0 :(得分:0)
问题最终得到解决。
我在fabfile.py中只更改了一行:
这
run('./run_fetchserver.sh restart')
到
run('./run_fetchserver.sh restart', pty=False)
因此程序在远程机器上成功启动。