踩坑日记之Upstart

Upstart的Expect

用upstart来管理系统的服务,很常见。但是也有需要注意的地方。比如,配置文件里面的expect。

Expect有两种,”expect fork”表示进程只会fork一次,”expect daemonize”表示进程会fork两次,将自己变成后台进程。

然而,错误的配置文件会让upstart启动某个进程之后,却无法跟踪管理这个进程的PID。结果Upstart会进入奇妙的状态。

没办法,虽然本应该是它的PID,还没找到就不见了~因此,它十分怀念,念念不忘这个PID,以至于再也无法控制这个程序~无法启动,停止,重启这个进程。

怎么办?

方法其实很简单,如果我们可以启动一个服务,它的PID是Upstart所需要的PID,然后让Upstart跟踪到,然后kill掉这个PID的进程,那么Upstart的行为才可以变为正常。

code

有一个ruby的代码,可以参考下。亲测可用~