如何在启动时和退出时运行jar文件?
我不知道从哪里开始寻找。 我一直在阅读关于守护进程的内容并且不理解这个概念。
更多细节 :
- 我一直在写一个爬行器,在互联网上永远不会停止和抓取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
对于stop脚本,它可以是这样的:
#!/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 init系统。
是! 有可能的。 🙂 Upstart是确保服务保持运行的方法。 它有五个包,默认安装:
- Upstart init守护程序和initctl实用程序
- upstart-logd为logd服务提供logd守护程序和作业定义文件
- upstart-compat-sysv为rc任务提供作业定义文件,并提供与SysVinit兼容的reboot,runlevel,shutdown和telinit工具
- startup-tasks为系统启动任务提供作业定义文件
- system-services为tty服务提供作业定义文件
学习非常愉快,非常值得。 Upstart有一个网站: http : //upstart.ubuntu.com/
3快速建议……
-
在
/etc/rc3.d
(多用户控制台模式)中使用/etc/rc.0
和/etc/rc6.d
相应K ill脚本创建一个S tart脚本,以便在系统关闭时以受控方式/etc/rc6.d
Java程序(runevel 0)或重新启动(运行级别6)请参阅Runlevels简介 。您可以在运行级别2(rc2.d)中启动Java应用程序,但作为爬虫程序,它将需要TCP / IP。 因此,请确保您的网络服务事先在您的运行级别2中可用/启动。 网络肯定在运行级别3。
/etc/init.d
包含所有实际的启动/终止脚本。/etc/rcN.d
目录只包含指向它们的链接,前缀为S或K,分别为每个运行级别N启动或/etc/rcN.d
它们。 -
crond
运行的进程应该在注销之间保持不变。 也许将它添加到您的crontab。 -
使用
nohup
运行的进程也应该持续存在。 请参阅nohup:即使在您注销后也运行命令 。$ nohup java -jar myapp.jar &
默认情况下,如果前者不可写,
myapp.jar
的标准输出将转到名为./nohup.out
的文件或$HOME/nohup.out
。
使用时也要注意:
update-rc.d myscript defaults
拥有权限0755并使用或获取.sh之前的路径。 假设你的脚本在/root/test.sh上,你应该在访问test.sh
之前先更改为CD /root/
。
所以最好的方法是在init.d上创建一个SH,然后改变你的sh
的路径并在start函数中执行它。
使用Java版本检查Linux auth-agent和Windows auth-agent.bat的简单启动脚本
最简单的方法是使用supervisord
。 请在http://supervisord.org/上查看完整详情。
您还可以在此处查看更多详细信息:
系统启动时运行可执行jar文件