首页 > 系统相关 >Linux systemd学习

Linux systemd学习

时间:2023-01-29 23:12:57浏览次数:52  
标签:systemd 服务 配置文件 service 启动 Systemd 学习 Linux 单元

Systemd

 

内容简介

一、Systemd 的定义

二、Systemd 的常用命令

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

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

 

一、Systemd 的定义

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

(daemon)的形式运行程序

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

 

二、Systemd 的常用命令

systemctl command xxx.service

#其中command 可以是start、stop、restart、enable 等,比如:

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 表示在启动的时候会执行touch,tmp 目录。

  • Install 部分

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

 

标签:systemd,服务,配置文件,service,启动,Systemd,学习,Linux,单元
From: https://www.cnblogs.com/woodx/p/17074059.html

相关文章

  • Linux unzip 解压后文件名乱码
    目录问题描述解决办法方法1:实践可用[来源于文末链接1]方法2:实践可用(recommend)[来源于文末链接1]问题描述直接使用unzipfileName.zip命令解压zip文件,解压出的文件名是......
  • Jmeter学习:jtl 文件的html格式输出
    我们可将测试结果保存成XXX.jtl格式文件,来生成html报告,方便阅读。具体步骤如下:1、在Tools下选择GenerateHTMLrepot。 2、按要求填写,并点击生成报告。 Resul......
  • JavaScript学习笔记—DOM之元素节点
    元素节点对象(element)在网页中,每一个标签都是一个元素节点如何获取元素节点对象?通过document对象来获取元素节点通过document对象来创建元素节点通过document来获......
  • linux驱动移植-linux网卡驱动基础
    一、OSI七层模型1.1、概念OSI七层模式是一个标准,规定了各种计算机在世界范围内互联成网的标准框架,OSI模型是一个分层的模型,每一个部分称为一层,每一层扮演固定的角色,互不......
  • Linux学习-DAY5
    一、文件目录管理命令1.touch命令touch命令用于创建空白文件或设置文件的时间,语法格式为“touch[参数] 文件名称”。2.mkdir命令mkdir命令用于创建空白的目录,英文全称为“......
  • 学习笔记——redis事务、乐观锁、悲观锁
    2023-01-29一、redis事务与乐观锁相关命令1、redis事务(1)redis事务的含义redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序执行。事务在执行过程中,不......
  • Linux sudo: 无法执行 fork: 资源暂时不可用
    故障现象sudo:无法执行fork:资源暂时不可用  解决方案1:[2842072.342664]cgroup:forkrejectedbypidscontrollerin/user.slice/user-1003.slice/session......
  • linux 高效压缩工具之xz的压缩解压使用
    xz是什么高压缩率的工具,它使用LZMA2压缩算法,生成的压缩文件比传统使用的gzip、bzip2生成的压缩文件更小,不过xz也有一个坏处就是压缩时间比较长,比7z压缩时间还长一些......
  • LinuxToGo(but failed)
    LinuxToGo前置准备VirtualBox7.0(Windows系统)KingstonUSB64GB(Deepin要求大于20GB)deepin-desktop-community-20.8-amd64.iso(官网下载)U盘格式化提前去磁盘管理......
  • 【Matlab学习1.7】字符串处理
    字符串的表示在Matlab中,字符串是用单引号括起来的字符序列。例1.7.1:>>xm='MatlabUniversity'xm='MatlabUniversity'>>xm(1:3)ans='Mat'若字符串......