一:咱们通过这篇文章来演示怎么将某个程序作为服务(就类似Windows服务可以开机自动启动),这里以tomcat为例,已经亲测过;
二:步骤(最好用root用户来做这种事情,切换root用户记得su - root)
1)在/etc/rc.d/init.d目录下新建服务名文件,我个人的是叫tomcatd;此时存在/etc/rc.d/init.d/tomcatd文件;
2)编辑这个文件,最终代码如下:
// 这里说明下,下面的内容凡是在/**/内的都表示为了描述功能而做的备注,不应该写到真实环境
#!/bin/bash #chkconfig: 2345 90 60/*2345是表示这个服务的优先级,可以跟着写即可,90和60分别代表start和kill的优先级,目前所知似乎只要是10-90之间就没太大问题*/ #description: auto_run/*据说是为了可以自动运行,而且还有说没有这个参数就会怎样怎样的,但是我在CentOS下测试这个可以没有*/ #source function libary/*更新一下最新的配置*/ . /etc/rc.d/init.d/functions #source networking configuration . /etc/sysconfig/network #check that networking is up/*如果你的不是网络服务则这句话不要它,而且即便是网络服务也要有一些特殊配置这个代码才会有效*/ [ "$NETWORKING" = "no" ] && exit 0 #tomcat home path tomcat=/usr/local/apache-tomcat-8.5.29 startup=$tomcat/bin/startup.sh shutdown=$tomcat/bin/shutdown.sh #echo -n 是不换行输出,即前后两个echo输出的在同一行 #$?是上一次执行命令的返回值 start(){ echo -n $"Starting tomcat service:" sh $startup echo $?/*每次service tomcatd start都会输出一句话最后OK什么的*/ } stop(){ echo -n $"Stoping tomcat service:" sh $shutdown echo $? } restart(){ stop start } status(){
/*这个输出状态的个人偷懒了,可以写精确一点*/ ps -ef|grep tomcat } case "$1" in start|stop|restart|status) $1 ;;/*类似break;*/ *)/*default,后面也可以加上;;,*)并非必须的*/ echo 'Not support operation.' esac exit 0/*表示此shell命令执行成功*/
上面的脚本根据自己的需求写好保存,然后通过:
chkmod 755 /etc/rc.d/init.d/tomcatd;给这个脚本文件添加所属者所有权限和组即其它人的读和运行的权限;
然后用chkconfig --add tomcatd;命令将该脚本添加到服务;
用chkconfig tomcatd on;将此服务作为开机启动服务;
之后便是用service tomcatd (start|stop|restart|stop)命令操作此服务了;
以上均自己测试过,如果有问题可以检查自己的jdk/jre是否安装配置好(如果跟java无关则是不需要配置的)