Linux 之centos7 制作服务自启动systemd

Posted 暖夏未眠丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 之centos7 制作服务自启动systemd相关的知识,希望对你有一定的参考价值。

摘要: - Centos7开机第一个程序从init完全换成了systemd这种启动方式,同centos 5 6已经是实质差别。systemd是靠管理unit的方式来控制开机服务,开机级别等功能。 在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里临时介绍关于service后缀的文件。

  • Centos7开机第一个程序从init完全换成了systemd这种启动方式,同centos 5 6已经是实质差别。systemd是靠管理unit的方式来控制开机服务,开机级别等功能。

  • 在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里临时介绍关于service后缀的文件。因为systemd在开机要想执行自启动,都是通过这些*.service 的unit控制的

具体流程

  1. 在/usr/lib/systemd/system目录下新建一个 service-name.service的文件
  2. 以apache的httpd.service的unit为例解释
[Unit]
#定义描述
Description=The Apache HTTP Server 
#指定了在systemd在执行完那些target之后再启动该服务
After=network.target remote-fs.target nss-lookup.target

[Service]
#定义Service 的运行type,一般是forking,就是后台运行
Type=notify
Environment=LANG=C
#以下定义systemctl start |stop |reload *.service  的每个执行方法,具体命令#需要写绝对路径
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
# Send SIGWINCH for graceful stop
KillSignal=SIGWINCH
KillMode=mixed
#创建私有的内存临时空间
PrivateTmp=true

[Install]
WantedBy=multi-user.target

以下是我自己写的一个java项目,需要他开机自运行的service,systemd会帮我执行我写脚本,shell如下,仅供参考

#!/bin/bash
CMD=$1

case $CMD in 
-start)

        nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log &
        ;;
-stop)

        port=$(sudo netstat -tnlp | grep ‘:9099‘ |awk ‘{print $nf}‘ |awk -f‘/‘ ‘{print $1}‘)
        sudo kill $port
        ;;

-restart)

        port=$(sudo netstat -tnlp | grep ‘:9099‘ |awk ‘{print $nf}‘ |awk -f‘/‘ ‘{print $1}‘)
        sudo kill $port
        nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log &
        ;;
*)
        echo "Usage: shMediaManager.sh -start | -stop | -restart .Or use systemctl start | stop | restart  MediaManager.service "
        ;;
esac

编辑.service文件,在Exec*下执行脚本,来启动关闭重启服务

[UNIT]
Description=Media wanager Service
After=network.target

[Service]
Type=forking
**ExecStart=/home/mobileoa/apps/shMediaManager.sh -start
ExecReload=/home/mobileoa/apps/shMediaManager.sh -restart
ExecStop=/home/mobileoa/apps/shMediaManager.sh -stop**
PrivateTmp=True

[Install]
WantedBy=multi-user.target

设置开机自起
systemctl enable MediaManager.service
会创建一个连接



以上是关于Linux 之centos7 制作服务自启动systemd的主要内容,如果未能解决你的问题,请参考以下文章

centos7制作开机自启动服务

linux之chkconfig

Linux系统启动流程制作自定义linux之一

centos6 centos7 配置开机启动服务

Linux设置tomcat开机自启动:centos7

centos7中设置服务开机自启的两种方法