问题描述
我不知道从哪里开始寻找。我一直在阅读有关守护程序的内容,但并不了解该概念。
更多细节 :
我一直在写一个爬虫,它永远不会停止,并且不会通过Internet上的RSS爬虫。
搜寻器已经用Java编写-因此现在是一个jar。
我是拥有Ubuntu 11.04的计算机上的管理员。
机器有可能崩溃,所以我希望每次启动机器时都运行搜寻器。
此外,即使我注销,我也希望它能够继续运行。我不确定这是否可行,但是大多数时候我都注销了,但我仍然希望它继续爬网。
有任何想法吗?有人可以指出我正确的方向吗?
只是寻找最简单的解决方案。
最佳方法
这是使用SysVInit的一种简单方法。说明:
创建您的应用程序的开始和停止脚本。将其放在某个目录中,在我们的示例中是:
启动脚本:/usr/local/bin/myapp-start.sh
停止脚本:/usr/local/bin/myapp-stop.sh
每个人都将提供运行/停止该应用程序的说明。例如,myapp-start.sh内容可以很简单,如下所示:
#!/bin/bash
java -jar myapp.jar
对于停止脚本,可能是这样的:
#!/bin/bash
# Grabs and kill a process from the pidlist that has the word myapp
pid=`ps aux | grep myapp | awk '{print $2}'`
kill -9 $pid
创建以下脚本(myscript)并将其放在/etc/init.d上。
/etc/init.d/myscript内容:
#!/bin/bash
# MyApp
#
# description: bla bla
case $1 in
start)
/bin/bash /usr/local/bin/myapp-start.sh
;;
stop)
/bin/bash /usr/local/bin/myapp-stop.sh
;;
restart)
/bin/bash /usr/local/bin/myapp-stop.sh
/bin/bash /usr/local/bin/myapp-start.sh
;;
esac
exit 0
将脚本放入系统中(使用SysV)。只需运行以下命令(以root用户身份):
update-rc.d myscript defaults
PS:我知道Upstart非常好,但我还是喜欢旧的SysV初始化系统。
次佳方法
是!有可能的。 🙂 Upstart是确保服务保持运行的一种方式。它有五个软件包,默认情况下全部安装:
新贵的init守护程序和initctl实用程序
upstart-logd为日志服务提供logd守护程序和作业定义文件
upstart-compat-sysv提供rc任务以及重新启动,运行级别,关闭和telinit工具的作业定义文件,这些文件提供与SysVinit的兼容性
startup-tasks为系统启动任务提供作业定义文件
system-services提供tty服务的作业定义文件
参考资料