centos7版本并没有彻底废除init服务管理方式,而是systemctl和init共存;用惯了centos6版本的小伙伴,有些不适应systemctl管理服务的方式,这两种方式以nginx服务为例都介绍一下:
一、添加自定义服务
1.通过init.d方式添加
1)在/etc/init.d/目录下添加脚本:
vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Server Control Script
NP="/usr/local/nginx/sbin/nginx"
NPF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$NP;
if [ $? -eq 0 ]
then
echo "nginx is starting!! "
fi
;;
stop)
kill -s QUIT $(cat $NPF)
if [ $? -eq 0 ]
then
echo "nginx is stopping!! "
fi
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $NPF)
if [ $? -eq 0 ]
then
echo "nginx config file is reload! "
fi
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
(这里要注意:脚本开始必须有 # chkconfig: xx xx xx,分别代表启动级别,启动序号和退出序号;否则就不能以init方式添加并设置开机自启)
2)设置可执行权限,添加服务并设置开机自启
chmod +x /etc/init.d/nginx
chkconfig --add nginx
chkconfig --level 35 nginx on
3)说明:
和centos6版本一样,服务的启动脚本都在/etc/rc.d/init.d/目录下,并且可以通过命令查询服务列表:chkconfig --list
;
通过前面操作,在/etc/init.d/和/etc/rc.d/init.d/目录下都有了nginx这个脚本;但是据我理解,/etc/init.d/目录下一般放置服务开关程序(例如服务启动脚本),可以直接手动开启、关闭或者重启服务;
而在/etc/rc.d/init.d/目录下一般放置的是开机时自动管理服务的程序;比如执行chkconfig --add nginx,就可以看到这个目录下新增了nginx脚本;然后再执行chkconfig --level 35 nginx on,就可以看到在/etc/rc.d/rc3.d和/etc/rc.d/rc5.d目录下分别新增了软连接文件,表示在3 5级别下开机自启nginx服务;
二、通过systemctl添加服务
凡是通过rpm包安装的服务,几乎都可以使用如下方式启动服务:
/etc/init.d/servername start
service start servername
systemctl start servername