description pro cc"
author "mjrao"
start on (filesystem and net-device-up IFACE=lo)
stop on runlevel [!2345]
env DAEMON=/usr/sbin/pro
env PID=/var/run/pro.pid
console none
respawn
respawn limit unlimited
pre-start script
sleep 10
end script
script
exec $DAEMON
end script
在上篇文章中提到关于 ubuntu下面将程序做成服务运行,主要采用了upstart方式(http://upstart.ubuntu.com/)
http://blog.fens.me/linux-upstart/ 以上URL 是upstart的详细介绍
————————————————————————————————————————————————
当时面临问题: 1. init进程内存不停的增加,最终导致系统崩溃
2. 服务进程占用cpu 高居不下
3. 由于 服务进程其中之前需要网络支持。虽然在描述脚本中start on 有如下描述
net-device-up IFACE=lo
但是似乎还是不行,尽管我把 IFACE= eth0。此系统环境中是网卡IP信息是本人在/etc/network/interface中手动修改的。并非在窗体界面上配置。 最终导致程序起来之后,设置的静态IP未生效。
————————————————————————————————————————————————
以上三个问题,在几度放弃的情况下最终找到了解决方案:
1. 去掉了 expect fork
2. console none 并且把主程序中的while循环中标准i/o操作去掉
3. 在pre-start 中添加 sleep 10. 即程序在等待10秒之后再启动,这样避免了网络问题