欢迎光临
我们一直在努力

Linux 之centos7 制作服务自启动systemd

  • 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为例解释
  1. [Unit]
  2. #定义描述
  3. Description=The Apache HTTP Server
  4. #指定了在systemd在执行完那些target之后再启动该服务
  5. After=network.target remote-fs.target nss-lookup.target
  6. [Service]
  7. #定义Service 的运行type,一般是forking,就是后台运行
  8. Type=notify
  9. Environment=LANG=C
  10. #以下定义systemctl start |stop |reload *.service  的每个执行方法,具体命令#需要写绝对路径
  11. ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
  12. ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
  13. # Send SIGWINCH for graceful stop
  14. KillSignal=SIGWINCH
  15. KillMode=mixed
  16. #创建私有的内存临时空间
  17. PrivateTmp=true
  18. [Install]
  19. WantedBy=multi-user.target

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

  1. #!/bin/bash
  2. CMD=$1
  3. case $CMD in
  4. -start)
  5.         nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log &
  6.         ;;
  7. -stop)
  8.         port=$(sudo netstat -tnlp | grep ‘:9099‘ |awk ‘{print $nf}’ |awk -f’/’ ‘{print $1}’)
  9.         sudo kill $port
  10.         ;;
  11. -restart)
  12.         port=$(sudo netstat -tnlp | grep ‘:9099‘ |awk ‘{print $nf}’ |awk -f’/’ ‘{print $1}’)
  13.         sudo kill $port
  14.         nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log &
  15.         ;;
  16. *)
  17.         echo “Usage: shMediaManager.sh -start | -stop | -restart .Or use systemctl start | stop | restart  MediaManager.service “
  18.         ;;
  19. esac

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

  1. [UNIT]
  2. Description=Media wanager Service
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. **ExecStart=/home/mobileoa/apps/shMediaManager.sh -start
  7. ExecReload=/home/mobileoa/apps/shMediaManager.sh -restart
  8. ExecStop=/home/mobileoa/apps/shMediaManager.sh -stop**
  9. PrivateTmp=True
  10. [Install]
  11. WantedBy=multi-user.target

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

赞(0) 打赏
未经允许不得转载:运维那些事 » Linux 之centos7 制作服务自启动systemd

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏