Systemd | 学习笔记

简介: 快速学习Systemd,掌握如何进行服务的管理和配置,并引导学生主动完成服务的编写,为后续的运维工作打下基础

开发者学堂课程【Linux 系统管理进阶第二课时:Systemd】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/789/detail/13754


Systemd


内容简介

一、Systemd 的定义

二、Systemd 的常用命令

三、查看已有的Systemd 配置文件

四、编写一个简单的Systemd 配置文件

 

一、Systemd 的定义

Systemd 服务是一种以.service 结尾的单元(unit)配置文件,用于控制由Systemd 控制或监视的进程。简单说,用于后台以守护精灵

(daemon)的形式运行程序

Systemd 广泛应用于新版本的RHELSUSE Linux EnterpriseCentOSFedora openSUSE 中,用于替代旧有的服务管理器service.


二、Systemd 的常用命令

systemctl command xxx.service

#其中command 可以是startstoprestartenable 等,比如:

systemctl start httpd.service#启动Apache 服务

systemctl stop httpd.service#停止Apache 服务

systemctl restart httpd.service#停止Apache 服务

systemctl enable mariadb.service#MariaDB 服务设为开机启动


三、查看系统已有的Systemd 配置文件

Systemd 的配置文件都放置在/etc/systemd/system/目录下

image.png

典型常用的systemd 配置文件包含的三个单元

[Unit]#这个项目与此unit 的解释、执行服务相依性有关Description=OpenBSD Secure Shell serverDocumentat ion=man:sshd(8) man:sshd_ config(5)After=network. target auditd. service
ConditionPathExists=!/etc/ssh/sshd_ not_ to_ be_ run
  [Service] #
这个项目与实际执行的指令参数有关EnvironmentFile=- -/etc/default/ssh
ExecStartPre=/usr/sbin/sshd -t
ExecStart=/usr/sbin/sshd -D $SSHD_ OPTSExecReload=/us r/sbin/sshd-tExecReload=/bin/kill -HUP $MAINPIDKillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Typе =notify
Runt imeDirectory=sshd
RuntimeDirectoryMode=0755
   [Install] #
込个項目説明此unit要挂載啣个target下面WantedBy=multi -user. target
Alias=sshd. Service


Systemd 的Unit Systemd ,所有引导过程中Systemd 要控制的东西都是-个单元。基本的用法如下:

  • Description :代表整个单元的描述,可根据需要任意填写。
  • Wants :本单元启动了,想要"的单元也会被启动。但是这个单元若启动不成功,对本单元没有影响。
  • Requires:这个单元启动了,那么它需要"的单元也会被启动;需要的单元被停止了,但是,这个设定并不能控制启动顺序,因为它需要的单元启动也需要时间,若它需要的单元启动还未完成,就开始启动本单元,则本单元也无法启动,所以不建议使用这个字段。
  • OnFailure:若本单元启动失败了那么启动这个单元作为折衷。
  • Before/After :指定启动顺序。


Systemd 的Service 服务本体,基本的用法如下:

  • Type :服务的类型,各种类型的区别如下所示simple :默认,这是最简单的服务类型。意思就是说启动的程序就是主体程序,这个程序要是退出那么一切皆休.
  • forking :标准Unix Daemon 使用的启动方式。

启动程序后会调用fork0函数,把必要的通信频道都设置好之后父进程退出,留下守护精灵的子进程。

  • oneshot :适用于那些被- -次性执行的任务或者命令,它运行完成后便了无痕迹。因为这类服务运行完就没有任何痕迹,我们经常会需要使用RemainAfterExit=yes.即使没有进程存在, Systemd 也认为该服务启动成功了。

同时只有这种类型支持多条命令,命令之间用;分割,如需换行可以用\

  • dbus :这个程序启动时需要获取-DBus空间,所以需要和BusName= -起用。只有它成功获得了DBus 空间,依赖它的程序才会被启动。
  • ExecStart :在输入的命令是start 时候执行的命令,这里的命令启动的程序必须使用绝对路径,比如你必须用/sbin/arp而不能简单的以环境变量直接使用arp.
  • ExecStop :在输入的命令是stop时候执行的命令, 要求同上。ExecReload :这个不是必需,如果不写则service 就不支持restart 命令。ExecStart ExecStop 是必须要有的。


Systemd 的Install
服务编写完之后还需要被systemd 装载,定义安装单元各个字段如下:

  • WantedBy :设置服务被谁装载,一般设置为multi-user.target
  • Alias :service 设置-个别名 ,可以使用多个名字来操作服务。
  • Also :  在安装这个服务时候还需要的其他服务


四、编写一个简单的Systemd 配置文件

image.png

1.代码讲解

image.png

  • Unit 部分

something 代表任何事物,任何内容,Wants 是服务启动成功时检查有遗漏启动,After 是指网络启动成功后执行

  • Service 部分

type 这个命令的执行完成,退出也认为服务是正常的,以及配置这个remainafterexit,表示即使建成退出也表示可以继续运行,另外两个就是两个最核心的execstart execstop 表示在启动的时候会执行touchtmp 目录。

  • Install 部分

Wantby 表示服务挂载在multi-user.target

 

 

相关文章
|
关系型数据库 Linux Apache
|
6月前
|
监控 Linux 开发者
Docker服务systemd配置文件详解
Docker服务systemd配置文件详解
268 0
|
NoSQL
systemd-coredump
systemd-coredump
237 0
|
监控 Java 数据库连接
服务--systemd的管理
服务--systemd的管理
181 0
|
缓存 监控 Ubuntu
linux Systemd详解(1)
linux Systemd详解(1)
linux Systemd详解(1)
|
监控 Linux
linux Systemd详解(2)
linux Systemd详解(2)
systemd简介
systemd是Linux的一个工具,是CentOS7.x系统启动的第一个进程 1.systemd的一些相关命令 (1)systemctl 系统管理 #检查系统是否充分的运行 [root@localhost ~]# systemctl is-system-running r...
1458 0