陈奇网络工作室

自定义systemctl管理服务

系统运输

定制systemctl管理服务

#前言

systemd通过管理单元来控制加电服务、加电等级等功能。

/usr/lib/systemd/system目录包含各种unit文件,例如具有服务后缀的服务单元和具有目标后缀的引导级单元。 本节介绍service后缀的文件。 systemd要加电并执行自启动,是由这些*.service的单元控制的,因为服务分为系统服务( system )和用户服务( user )。

系统服务:打开电源也无需登录即可运行的程序。 通常用于接通电源后再启动。

用户服务:登录后才能运行的程序。

配置文件说明:

的所有*.service文件都位于/lib/systemd/system目录下。

看看crontab.service文件,看看写了什么

[root@zhangsf system]# cd ~

[ root @ changsf~] # cat/usr/lib/systemd/system/crond.service

[Unit]

Description=Command Scheduler

after=auditd.servicesystemd-user-sessions.service time-sync.target

服务

environment file=/etc/sys config/crond

execstart=/usr/sbin/crond-n $ crond args

exec reload=/bin/kill-hup $ main PID

KillMode=process

[安装]

WantedBy=multi-user.target

可以看出分为以下几个部分

*[Unit]块:启动顺序和依赖关系

描述:当前服务的简要介绍

文档:使用文档位置

如果需要启动After:auditd.service或systemd-user-sessions.service服务,则必须在此服务之前启动

Before: crontd服务必须在这些服务之前启动

注意: After和Before只与启动顺序有关,与依赖关系无关。

[服务]启动动作

启动命令

“执行”字段:定义启动进程时运行的命令

ExecReload字段:重新启动服务时执行的命令

ExecStop字段:停止服务时执行的命令

ExecStartPre字段:用于在启动服务之前执行的命令

ExecStartPost字段:启动服务后执行的命令

ExecStopPost字段:停止服务后执行的命令

注意:可以在所有启动设置之前加上连接词号(-)。 这表示要抑制发生错误时不影响其他命令执行的错误。

例如,environment file=-/etc/sys config/sshd (注意等号后的连接词号)可以是例如

/etc/sysconfig/sshd文件不存在,也不会抛出错误。

注意: [Service]的启动、重新启动和停止命令都必须使用绝对路径。

启动类型

Type字段定义启动类型。 可以设定的值如下。

在simple:execstart字段中启动的流程是主流程

forking:ExecStart字段以fork ( )开始,父进程结束,子进程成为主进程(后台执行)

one shot :与simple类似,但只执行一次,Systemd在它执行之前不会启动其他服务

dus :与simple相似,但等待D-Bus信号后启动

notify :类似simple,启动结束时会发出通知信号,Systemd会重新启动其他服务

idle :与simple类似,但在其他任务完成之前不会启动服务。 一种使用场景是为了使该服务的输出不与其他服务的输出相混淆

重启行为

Service块包含用于定义重新启动行为的字段。

KillMode字段:定义Systemd停止sshd服务的方式。

control-group (默认)当前控制组中的所有子进程都会被杀死

process :只杀主流程

混合:主进程接收SIGTERM信号,而子进程接收SIGKILL信号

none :没有被杀的过程。 只需运行服务的stop命令。

Restart字段定义sshd退出后Systemd的重新启动方式

上面的示例将Restart设置为on-failure,并在出现意外失败时重新启动sshd。 如果sshd正常停止(例如运行systemctl stop命令),则不会重新启动。

可以为Restart字段设置以下值:

否(默认值) :退出后不重新启动

on-success :仅在正常结束时(结束状态代码为0 )重新启动

on-failure :如果不成功(结束状态代码不为0 ),则重新启动,包括信号结束和超时

on-abnormal :以信号结束,仅在超时时重新启动

on-abort :仅在未捕获的信号结束时重新启动

on-watchdog :在超时结束之前不重新启动

always :不管是什么退出理由,总是重新启动

注意:对于守护进程,建议将其设置为on-failure。 对于允许错误结束的服务,可以设置为on-abnormal。

RestartSec字段:指示Systemd在重新启动服务之前等待的秒数。

上面的例子是等待42秒。

安装[如何安装此配置式

WantedBy字段:指示服务所在的目标。

Target的意思是服务组,表示一组服务。

WantedBy=multi-user.Target意味着sshd所在的target为multi-user.target。

这个设定非常重要。 运行systemctl enable sshd.service命令时,sshd.service中的符号链接将显示在/etc/systemd/system目录下的multi-user.target.warget

Systemd有默认的启动目标。

系统获取-默认

#输出multi-user.target

以上结果表明缺省启动Target为multi-user.target。 此组中的所有服务将通电并启动。 因此,systemctl enable命令可以设置启动和启动。

使用Target时,systemctl list-dependencies和systemctl isolate命令也很有用。

显示multi-user.target中包含的所有服务

systemctllist-dependencies multi-user.target

#切换到其他目标

#shutdown.target处于关闭状态

systemctlisolateshutdown.target

一般来说,常用的目标有两个:

multi-user.target :指示多用户命令行的状态;

graphical.target :表示图形用户的状态,依赖于multi-user.target。

#例

[ root @ hangsfsystem ] # cat/usr/lib/systemd/system/node-exporter.service

[Unit]

description=thisisprometheusnodeexporter

After=docker.service

服务

Type=simple

execstart=/usr/local/bin/node _ exporter

exec reload=/bin/kill-hup $ main PID

KillMode=process

Restart=on-failure

[安装]

WantedBy=multi-user.target

执行命令

系统日期-读取

systemctlenablenode-exporter.service

systemctlstartnode-exporter.service

查看日志

[ root @ hangsfsystem ] # tail-f/var/log/messages

feb 611:53:40 zhangs fnode _ exporter:time=2020-02-06t 11:53:4008:00 level=info msg=-sockstat source=node \

feb 611:53:40 zhangs fnode _ exporter:time=2020-02-06t 11:53:4008:00 level=info msg=-stat source=node _ ex

feb 611:53:40 zhangs fnode _ exporter:time=2020-02-06t 11:53:4008:00 level=info msg=-textfilesource=node \

feb 611:53:40 zhangs fnode _ exporter:time=2020-02-06t 11:53:4008:00 level=info msg=-time source=node _ ex

feb 611:53:40 zhangs fnode _ exporter:time=2020-02-06t 11:53:4008:00 level=info msg=-Timex source=node _ ee

feb 611:53:40 zhangs fnode _ exporter:time=2020-02-06t 11:53:4008:00 level=info msg=-uname source=node _ ee

feb 611:53:40 zhangs fnode _ exporter:time=2020-02-06t 11:53:4008:00 level=info msg=-vmstat source=node _ nod

feb 611:53:40 zhangs fnode _ exporter:time=2020-02-06t 11:53:4008:00 level=info msg=-xfs source=node _ exp

feb 611:53:40 zhangs fnode _ exporter:time=2020-02-06t 11:53:4008:00 level=info msg=-ZFS source=node _ exp

feb 611:53:40 zhangs fnode _ exporter:time=2020-02-06t 11:53:4008:00 level=info msg=listening on:9100 source

参考:

33559 www.Jian Shu.com/p/79059 b06a 121

详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3