是这样的,我有多台机器,每台机器上有一个服务起停shell脚本,我在服务器上用fabric,ssh到各个机器,执行这个shell脚本,从fabric的输出来看,脚本是执行成功了,但是当我手动ssh到各个机器上查看服务进程的时候,服务并不存在,请问大家有没有遇到过这种问题,或者知道怎么解决么?
1
zeayes Mar 28, 2015
因为你ssh断开的时候,程序也挂了。
可以查下 nohup 和 &。 进程服务管理,推荐用supervisord。 |
2
hayao650 OP @zeayes nohup和&都试过了,一样不起作用,supervisord没有用过,准备去学习下,刚才发现有人遇到相同的问题,说是fabric过早的结束了ssh的session,加一个sleep可以解决这个问题,还没有试过,准备试一下。
|
3
lgh Mar 28, 2015
我之前是在 run() 方法里加 pty=False 参数解决的,没有加延迟和 nohup
|
4
dreampuf Mar 28, 2015
nohup 之后 记得 sleep 0.1,因为你的nohup本身没bootstrap完,ssh session就结束了
|
5
hayao650 OP @lgh 我在run函数中加上了这个参数,但是在fab运行完之后,手动ssh到该机器,ps能够查看到该进程,但是该进程的父进程是1,该进程变成了孤儿进程,而且不能正常运行,请问你遇到过这种情况么?
|