CentOS7和CentOs6添加自定义service的区别
2018-10-19 本文已影响0人
Minato666
从CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。
我们用添加jboss启动服务来举个例子:
CentOS6中,我们将JBOSS_HOME/bin/init.d/目录下的jboss-as-domain.sh 拷贝到/etc/rc.d/init.d/,然后执行sudo chkconfig --add jboss-as-domain.sh将jboss-as-domain.sh添加成了系统的service,添加完成之后就可以使用service jboss-as-domain.sh start/stop 这些命令启停服务。
但是在centos7中完全不同,centos7中service脚本是在/usr/lib/systemd/system这个目录下,脚本格式如下:
[Unit]
Description=jbossapi
[Service]
Type=forking
PIDFile=/run/jboss-as/jboss-as-domain.pid
EnvironmentFile=-/etc/jboss-as/jboss-as-domain.conf
ExecStart=/alidata1/setupTms3/jboss-eap-6.4/bin/init.d/jboss-as-domain.sh start
ExecReload=/alidata1/setupTms3/jboss-eap-6.4/bin/init.d/jboss-as-domain.sh restart
ExecStop=/alidata1/setupTms3/jboss-eap-6.4/bin/init.d/jboss-as-domain.sh stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- [Unit]部分主要是对这个服务的说明,内容包括Description和After,Description 用于描述服务,After用于描述服务类别
- [Service]部分是服务的关键,是服务的一些具体运行参数的设置.
Type=forking是后台运行的形式,
EnvironmentFile=设置运行时的环境变量,
PIDFile为存放PID的文件路径,
ExecStart为服务的具体运行命令,
ExecReload为重启命令,
ExecStop为停止命令,
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!
1 - [Install]部分是服务安装的相关设置,可设置为多用户的
添加完该文件之后使用chmod 754 /usr/lib/systemd/system/jboss-as-domain.service添加可执行权限,这样我们的service就添加成功了,可以使用systemctl start/stop jboss-as-domain.service 启动或者停止服务。