Centos7以前的版本中,系统管理员都是通过把bash脚本放到/etc/init.d/目录下来控制服务状态,比如启动start、停止stop,重启restart等。而在CentOS7版本中,就不在采用这种方法,而是采用了Unit配置文件来管理服务。接下来我们通过例子来简单讲述一下systemd service编写方法。

学过用过Centos7的朋友,都知道Systemd服务主要内容为:控制单元[unit]的定义、服务[service]的定义、安装[install]部分。

我们先写个脚本如下:

[root@localhost ~]# cat systemd_test.sh 

#!/bin/bash

while true

do

        echo `date`>> /root/systemd_test.txt

        sleep 2

done

CentOS7.3学习笔记总结(七十)_第1张图片                                               

在脚本执行的时候,会循环(每2秒)把系统时间写入到/root/system_test.txt文件中,脚本不做过多的解释了,太简单了,执行程序的监控此文件即可。

编写systemd service,文件放到/etc/systemd/system目录下。文件内容如下:

[root@localhost ~]# cat /usr/lib/systemd/system/systemd_test.service

[Unit]

Description=date daemon

 

[Service]

ExecStart=/root/systemd_test.sh

Restart=always

Type=simple

 

[Install]

WantedBy=multi-user.target

CentOS7.3学习笔记总结(七十)_第2张图片

执行运行命令:

systemctl start systemd_test.service

systemctl status systemd_test.service

CentOS7.3学习笔记总结(七十)_第3张图片

tail -f /root/systemd_test.txt文件如下:

CentOS7.3学习笔记总结(七十)_第4张图片

停止该服务:

systemctl stop systemd_test.service

清空systemd_test.txt内容:

> systemd_test.txt

设置该服务为开机自启动,然后重启电脑:

systemctl enable systemd_test.service

blob.png

启动后查看服务运行状态,以及systemd_test.txt文件内容截图如下,表明开机自启动配置成功。

CentOS7.3学习笔记总结(七十)_第5张图片

取消开机自启动命令:

systemctl disable systemd_test.service

blob.png

blob.png

systemd配置文件说明:

控制单元[Unit]:记录unit文件的通用信息

Description:单元的描述,内容可以任意书写,

 

服务[Service]:记录service的信息

ExecStart:服务启动时执行的命令,通常是服务的主体。若服务类型不是oneshot,那么它只接受一个命令,参数不限制。如果是多个命令用分号隔开。

Restart:定义服务何种情况下重启。

Typeservice的种类,simple(默认):启动的程序是主体程序,这个程序退出那么一切都退出;forking:标准 Unix Daemon 使用的启动方式。启动程序后会调用 fork() 函数,把必要的通信频道都设置好之后父进程退出,留下守护精灵的子进程;oneshot:就是启动,完成,没进程。

 

安装[Install]:安装信息

WantedBy:任何情况下,服务被启用。

WantedBy =multi-user.target,多用户环境下启用

这是最简单systemd编写,还有很多东西没有涉及,请大家自行学习。