最近有项目开发,需要将一个jar包设为Centos开机后作为系统服务自动运行。同时又可以根据需要随时start、stop或者查看服务的status。在网上看到的方法对于启动java -jar这样的命令并不太适用,所以我研究了一个方法。
这个办法的大概思路是编写一个脚本,脚本中使用java -jar来启动jar包。然后chkconfig注册为系统服务。如果要停止服务,则先在系统进程中搜索java -jar对应的PID,然后kill掉进程。
首先编写启动脚本。
其中:
#chkconfig 2345 85 15 标识启动等级。
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
start()表示启动的时候将执行的脚本。
stop()表示停止的时候会执行的脚本。脚本首先查询java -jar udeskXXX对应的进程的PID号。如果直接执行ps -ef | grep 这时候会返回两行。这是因为console也会算一个进程。所以需要把第二行内容屏蔽掉。
然后会用到awk这个强大的文本分析工具来截取PID的字段。awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。在这里我们awk '{print $2},把第二个字段的内容打印出来。
ok以后我们把文件保存在/etc/init.d/文件夹下面。先用chmod +x 文件名给这个脚本文件添加执行权限。
用chkconfig --add 命令添加为系统服务。如果添加成功,chkconfig --list的时候可以看到这个条目。
然后可以通过reboot来激活或者进入. /etc/init.d/服务名称 start来启动业务