Answers:
这是使用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是确保服务保持运行的一种方式。它有五个软件包,默认情况下全部安装:
学习非常愉快,非常值得。新贵有一个网站:http : //upstart.ubuntu.com/
3个快速建议...
在(多用户控制台模式)下创建一个S tart 脚本,并在其中插入/etc/rc3.d
相应的K ill脚本,/etc/rc.0
并/etc/rc6.d
在系统断电(runevel 0)或重新引导(runlevel 6)时以受控方式杀死Java程序。请参阅Runlevels简介。
您也许可以在运行级别2(rc2.d)中启动Java应用程序,但是作为爬网程序,它将需要TCP / IP。因此,请确保事先在运行级别2中启用/启动了网络服务。在运行级别3中肯定已建立网络。
/etc/init.d
包含所有实际的开始/杀死脚本。/etc/rcN.d
目录仅包含指向它们的链接,每个运行级别N都以S或K为前缀来分别启动或杀死它们。
crond
退出之间运行的进程应保持不变。也许将其添加到您的crontab中。
运行的过程nohup
也应该持续。请参阅nohup:即使注销后也要运行命令。
$ nohup java -jar myapp.jar &
默认情况下,myapp.jar
的标准输出将转到名为的文件./nohup.out
,或者$HOME/nohup.out
如果前者不可写。
具有Java版本检查功能的简单启动脚本,用于Linux auth-agent 和Windows auth-agent.bat
最简单的方法是使用supervisord
。请在http://supervisord.org/上查看完整的详细信息
您还可以在此处查看更多详细信息: