zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux 之centos7 制作服务自启动systemd

Linuxcentos7服务 制作 自启动 systemd
2023-09-11 14:16:11 时间
- 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控制的

具体流程

在/usr/lib/systemd/system目录下新建一个 service-name.service的文件 以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网络服务之DNS服务 DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互 映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。