sysTemd   发布时间:2019-10-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了systemd 编写服务管理脚本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

http://www.cnblogs.com/sparkdev/p/8448237.html" target="_blank">初识 systemd》一文中的介绍,linux 的 init 系统已经从最初的 sysvinit 进化到了如今的 systemd。本文主要介绍在 systemd 环境中如何编写运行服务的配置文件。

已经介绍过,service 类型的 unit 代表一个后台服务进程。接下来我们就详细的介绍如何配置 service 类型的 unit。下面我们先来看一个简单的服务配置:

[Unit] Description==https:s.io/docs/introduction/overview/ After=[service]
User
=<span style="color: #000000">prometheus
Restart
=on-<span style="color: #000000">failure
WorkingDirectory
=/usr/local/share/prometheus/<span style="color: #000000">
ExecStart=/usr/local/share/prometheus/<span style="color: #000000">prometheus \
-config.<span style="color: #0000ff">file=/usr/local/share/prometheus/<span style="color: #000000">prometheus.yml

[Install]
WantedBy=multi-user.target

s.service 中,然后就可以使用 systemctl 命令管理 prometheus 服务了。注意,服务类型的配置文件名称必须以 .service 结尾。[Unit] unit 本身的说明,以及与其它有依赖关系的服务的设置,包括在什么服务之后才启动此 unit 之类的设置。[service] 不同的 unit 类型就得要使用相对应的设置项目,比如 timer 类型的 unit 应该是 [Timer],socket 类型的 unit 应该是 [Socket]。服务类型的 unit 就是 [service],这个项目内主要在规范服务启动的脚本、环境配置文件文件名、重新启动的方式等等。[Install] 这个部分主要设置把该 unit 安装到哪个 target 。

Description    关于该 unit 的简易说明。Documentation    文档相关的内容,如 Documentation=https://prometheus.io/docs/introduction/overview/                               Documentation=man:sshd(8)                               Documentation=file:/etc/ssh/sshd_configAfter    说明本 unit 是在哪个服务启动之后才启动的意思。仅是说明服务启动的顺序而已,并没有强制要求 。Before    与 After 的意义相反,在指定的服务启动前最好启动本个服务的意思。仅是说明服务启动的顺序而已,并没requires    本 unit 需要在哪个服务启动后才能够启动!就是设置服务间的依赖性。如果在此项设置的前导服务没Wants    与 requires 刚好相反,规范的是这个 unit 之后还要启动什么服务,如果这 Wants 后面接的服务如果没Conflicts    这个项目后面接的服务如果有启动,那么本 unit 就不能启动!如果本 unit 启动了,则指定的服务就不能启

service] 部分:默认值,这个服务主要由 ExecStart 设置的程序来启动,启动后常驻于内存中。:由 ExecStart 指定的启动的程序通过 spawns 产生子进程提供服务,然后父进程退出。neshot:与 simple 类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中。:与 simple 类似,但这个服务必须要在取得一个 D-Bus 的名称后,才会继续运行!因此设置这个项目时,通常也要设置 BusName= 才行。:与 simple 类似,意思是,要执行这个服务必须要所有的工作都顺利执行完毕后才会执行。这类的服务通常是开机到最后才执行即可的服务。:与 simple 类似,但这个服务必须要收到一个 sd_notify() 函数发送的消息后,才会继续运行。

,>>,|,& 等特殊字符,很多的 bash 语法也不支持。所以,要使用这些特殊的字符时,最好直接写入到脚本里面去!

ExecStartPre 和 ExecStartPost 分别在服务启动前后,执行额外的命令。

ExecStop 用来实现 systemctl stop 命令,关闭服务。ExecReload 用来实现 systemctl reload 命令,重新加载服务的配置信息。

Restart 当设置为 Restart=1 时,如果服务终止,就会自动重启此服务。RestartSec 与 Restart 配合使用,在服务终止多长时间之后才重新启动它。默认是 100ms。

lmode

才进入 "强制结束" 的状态!

neshot 的服务很有帮助!

Environment 用来设置环境变量,可以使用多次:

service] # Client Env Vars Environment=ETCD_CA_FILE=/path/to/=ETCD_CERT_FILE=/path/to/server.crt

EnvironmentFile 通过文件的方式设置环境变量,可以把下面的内容保存到文件 testenv 中:

AAA_IPV4_ANCHOR_0===test.example.com

然后这样设置:

service] EnvironmentFile=/testenv

ExecStart=/xxx --abc=xx${AAA_IPV4_ANCHOR_0}yy

WantedBy    这个设置后面接的大部分是 *.target unit。意思是,这个 unit 本身是附挂在哪个 target unit 下面。Also    当目前这个 unit 被 enable 时,Also 后面接的 unit 也要 enable 的意思。Alias    当 systemctl enable 相关的服务时,则此服务会进行链接文件的创建!

OnActiveSec    当 timers.target 启动后多久才执行这个 unit。OnBootSec    当开机后多久才执行这个 unit。OnStartupSec    当 systemd 第一次启动后多久才执行这个 unit。OnUnitActiveSec    这个 timer 配置文件所管理的那个 unit 服务在最后一次启动后,隔多久后再执行一次。OnUniTinactiveSec    这个 timer 配置文件所管理的那个 unit 服务在最后一次停止后,隔多久后再执行一次。Unit    一般不需要设置,基本上我们设置都是 服务名称.server + 服务名称.timer。如果你的服务名称和 timer 名称不相同,就需要在 .timer 文件中通过 Unit 项指定服务的名称。OnCalendar    使用实际时间(非循环时间)的方式来启动服务。Persistent    当使用 OnCalendar 的设置时,指定该功能要不要持续执行。

redis 服务

redis。在安装完成后需要把 redis 配置为 systemd 管理的服务,下面介绍具体的配置过程。redis 配置文件 redis 目录并添加配置文件:

$ /etc/redis

redis.conf 拷贝到 /etc/redis 目录中:

$ /tmp/redis-./redis.conf /etc/redis/

redis/redis.conf 中的 supervised 为 systemd:

title="systemd 编写服务管理脚本" alt="systemd 编写服务管理脚本" src="https://cn.js-code.com/res/2019/02-09/09/43ef5cae7bf1ba9e7cd7fe4da169a5d7.png" >

redis/redis.conf 中配置工作目录,把 dir ./ 修改为:redis

title="systemd 编写服务管理脚本" alt="systemd 编写服务管理脚本" src="https://cn.js-code.com/res/2019/02-09/09/9625e7e9453f7472d7aa1fcc72d7d4a9.png" >

redis 服务redis.service 文件

$ vim /etc/systemd/system/redis.service

=redis In-=[service]
User
=<span style="color: #000000">redis
Group
=<span style="color: #000000">redis
ExecStart
=/usr/local/bin/redis-server /etc/redis/<span style="color: #000000">redis.conf
ExecStop=/usr/local/bin/redis-<span style="color: #000000">cli shutdown
Restart=<span style="color: #000000">always

[Install]
WantedBy=multi-user.target

$ redis $ redis $ systemctl status redis

title="systemd 编写服务管理脚本" alt="systemd 编写服务管理脚本" src="https://cn.js-code.com/res/2019/02-09/09/b96b2c94dc2296d97db06c1ba2fc753d.png" >

#!/bin/{ BACkupdate=E) -zcf /tmp/BACkup.${BACkupdatE}..gz /home/nick/learn

BACkupdir.sh,并添加可执行权限:

$ +x /usr/local/bin/BACkupdir.

service unit 配置文件:

=nick BACkup learn service

[service]
User=<span style="color: #000000">nick
Group=<span style="color: #000000">nick
Type=<span style="color: #000000">simple
ExecStart=/usr/local/bin/BACkupdir.<span style="color: #0000ff">sh<span style="color: #000000">

[Install]
WantedBy=multi-user.target

service。

$ systemctl daemon- systemctl start nickbak.service

service 时执行一次。下面我们通过 timer unit 把它配置为定时执行。

=nick BACkup learn [Timer]
OnCalendar
=*:<span style="color: #800080">0
/<span style="color: #800080">15
<span style="color: #000000">
Persistent=<span style="color: #0000ff">true<span style="color: #000000">
Unit=<span style="color: #000000">nickbak.service

[Install]
WantedBy=multi-user.target

service 服务。

$ systemctl daemon- systemctl start nickbak.timer

$ systemctl status nickbak.timer

title="systemd 编写服务管理脚本" alt="systemd 编写服务管理脚本" src="https://cn.js-code.com/res/2019/02-09/09/56dcb00d12bbf30bb5057ebda29906ba.png" >

service 服务。

考:

大佬总结

以上是大佬教程为你收集整理的systemd 编写服务管理脚本全部内容,希望文章能够帮你解决systemd 编写服务管理脚本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:
猜你在找的sysTemd相关文章