Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >CentOS7下Systemctl详解

CentOS7下Systemctl详解

作者头像
用户5807183
发布于 2019-08-02 09:06:08
发布于 2019-08-02 09:06:08
1.4K0
举报
文章被收录于专栏:Linux知识积累Linux知识积累

一、Systemd简介

Systemd是由红帽公司的一名叫做Lennart Poettering的员工开发,systemd是Linux系统中最新的初始化系统(init),它主要的设计目的是克服Sys V 固有的缺点,提高系统的启动速度,systemd和upstart是竞争对手,ubantu上使用的是upstart的启动方式,centos7上使用systemd替换了Sys V,Systemd目录是要取代Unix时代依赖一直在使用的init系统,兼容SysV和LSB的启动脚本,而且能够在进程启动中更有效地引导加载服务。 system:系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其他进程,根据管理,字母d是守护进程(daemon)的缩写,systemd这个名字的含义就是它要守护整个系统。

二、Systemd新特性

  • 系统引导时实现服务并行启动
  • 按需启动守护进程
  • 自动化的服务依赖关系管理
  • 同时采用socket式与D-Bus总线式激活服务
  • 系统状态快照和恢复
  • 利用Linux的cgroups监视进程
  • 维护挂载点和自动挂载点
  • 各服务间基于依赖关系进行精密控制

三、Systemd核心概念

  • Unit 表示不同类型的sytemd对象,通过配置文件进行标识和配置,文件中主要包含了系统服务,监听socket、保存的系统快照以及其他与init相关的信息
  • 配置文件: /usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/initd.d /run/system/system:系统执行过程中所产生的服务脚本,比上面的目录优先运行 /etc/system/system:管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行,在三者之中,此目录优先级最高

四、Unit类型

  • systemctl -t help :查看unit类型
  • service unit:文件扩展名为.service,用于定义系统服务
  • target unit:文件扩展名为.target,用于模拟实现“运行级别”
  • device unit: .device,用于定义内核识别的设备
  • mount unit :.mount,定义文件系统挂载点
  • socket unit :.socket,用于标识进程间通信用的socket文件,也可以在系统启动时,延迟启动服务,实现按需启动
  • snapshot unit:.snapshot,关系系统快照
  • swap unit:.swap,用于表示swap设备
  • automount unit:.automount,文件系统的自动挂载点如:/misc目录
  • path unit:.path,用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务,如spool目录
  • time:.timer由systemd管理的计时器 注:使用systemctl控制单元时,通常需要使用单元文件的全名,包括扩展名,但是有些单元可以在systemctl中使用简写方式,如果无扩展名,systemctl默认把扩展名当做.service。例如netcfg和netcfg.service是等同的挂载点会自动转化为相应的.mount单元,例如/home等价于home.mount设备会自动转化为相应的.device单元,所以/dev/sd2等价于dev-sda2.device

五、关键特性

  • 基于socket的激活机制:socket与服务进程分离
  • 基于D-Bus的激活机制
  • 基于device的激活机制
  • 基于path的激活机制
  • 系统快照:保存各unit的当前状态信息于持久存储设备中想后兼容sysv init脚本

六、不兼容

  • systemctl命令固定不变,不可扩展
  • 非由systemd启动的服务,systemctl无语与之通信和控制,如:使用之前sys v风格管理的进程就无法收systemd控制

七、Systemd基本工具

监视和控制systemd的主要命令是systemctl。该命令可用于查看系统状态和管理系统及服务。

  • 管理服务

命令:systemctl command name.service

启动:service name start –>systemctl start name.service

停止:service name stop –>systemctl stop name.service

重启:service name restart–>systemctl restart name.service

状态:service name status–>systemctl status name.service

  • 条件式重启(已启动才重启,否则不做任何操作) systemctl try-restart name.service
  • 重载或重启服务(先加载,然后再启动) systemctl reload-or-try-restart name.service
  • 禁止自动和手动启动 systemctl mask name.service 执行此条命令实则创建了一个链接 ln -s '/dev/null' '/etc/systemd/system/sshd.service'
  • 取消禁止 systemctl unmask name.service 删除此前创建的链接
  • 服务查看(查看某服务当前激活与否的状态) systemctl is-active name.service 如果启动会显示active,否则会显示unknown
  • 查看所有已经激活的服务 systemctl list-units –t|–type service
  • 查看所有服务

设定某服务开机启动

  • chkconfig name on–>systemctl enable name.service

设定某服务开机禁止启动 chkconfig name off –>systemctl disable name.service

查看所有服务的开机自启状态 chkconfig –list–>systemctl list-unit-files -t service

  • 用来列出该服务在那些运行级别下启用或禁用

chkconfig sshd –list –>ls /etc/system/system/*.wants/sshd.service

[root@www ~]# ls /etc/systemd/system/*.wants/sshd.service

/etc/systemd/system/multi-user.target.wants/sshd.service

  • 查看服务是否开机自启 systemctl is-enabled name.servcice
  • 查看服务的依赖关系 systemctl list-dependencies
  • 查看启动失败的服务 systemctl -failed -t service
  • 查看服务单元的启用和禁用状态 systemctl list-unit-files –t=service
  • 杀死进程 systemctl kill 进程名 [图片上传失败...(image-53509-1519920006718)]
  • 服务状态 systemctl list-units -t service -a 显示状态 loaded:unit配置文件已处理 active(running):一次或多次持续处理的运行 active(exited):成功完成一次性的配置 active(waiting):运行中,等待一个事件 inactive:不运行 enabled:开机启动 disabled:开机不启动 static:开机不启动,但可以被另一个启用的服务激活
  • 运行级别 target units: unit配置文件:.target 以target结尾的文件 ls /usr/lib/system/system/*.target systemctl list-unit-files -type target -all 0–>runlevel0.target, poweroff.target 1–>runlevel1.target, rescue.target 2–>runlevel2.target, muti-user.target 3–>runlevel3.target, mutil-user.target 4–>runlevel4.target, multi-user.target 5–>runlevel5.target, graphical.target 6–>runlevel6.target, reboot.target
  • 查看依赖性 systemctl list-dependencies graphical.target
  • 查看默认运行级别 systemctl get-default 在Sys V风格的系统上是查看/etc/inittab文件其中有一条id:5:initdefault:
  • 级别切换 systemctl isolate muti-user.target 注意:只有当/lib/system/system/*.target文件中AllowIsolate=yes时才能奇幻(修改文件需执行systemctl daemon-reload生效)
  • 设定默认运行级别 systemctl set-default muti-user.target 实则将multi-user.target链接至default.target ls –l /etc/system/system/default.target
  • 进入紧急救援模式 systemctl rescue
  • 切换至emergency模式 systemctl emergency
  • 在systemd风格的系统上还能使用sysv风格系统上的关机,重启等命令,指示将该命令链接到systemctl的一个软链接 关机:systemctl halt systemctl poweroff 重启:systemctl reboot 挂起:systemctl suspend 休眠:systemctl hibernate 休眠并挂起:systemctl hybrid-sleep

CentOS7引导顺序

  • CentOS启动流程: POST –> Boot Sequence –> Bootloader –> kernel + initramfs(initrd) –> rootfs–> /sbin/init
  • UEFi或BIOS初始化,运行POST开机自检
  • 选择启动设备
  • 引导装载程序, centos7是grub2
  • 加载装载程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg(注:一般上修改grub.cfg配置文件,是直接修改/etc/default/grub,然后使用命令#grub2-mkconfig /boot/grub2/grub.cfg来生成修改 )

使用systemctl控制单元时,通常需要使用单元文件的全名,包括扩展名,但是有些单元可以在systemctl中使用简写方式

如果无扩展名,systemctl默认把扩展名当做.service。例如netcfg和netcfg.service是等同的

挂载点会自动转化为相应的.mount单元,例如/home等价于home.mount

设备会自动转化为相应的.device单元,所以/dev/sd2等价于dev-sda2.device 加载initramfs驱动模块

加载内核选项

内核初始化,centos7使用systemd代替init

执行initrd.target所有单元,包括挂载/etc/fstab

从initramfs根文件系统切换到磁盘根目录

systemd执行默认target配置,配置文件/etc/systemd/default.target /etc/systemd/system/

systemd执行sysinit.target初始化系统及basic.target准备操作系统

systemd启动multi-user.target下的本机与服务器服务

systemd执行multi-user.target下的/etc/rc.d/rc.local

systemd执行multi-user.target下的getty.target及登入服务

systemd执行graphical需要的服务(此为图形界面所有)

unit文件格式

以#开头的行后面的内容会被认为是注释 相关布尔值,1、yes、on、ture都是开启,0、no、off、false都是关闭 时间单位默认是秒

Unit文件组成

  • [Unit]:定义与Unit类型无关的通用选项,用于提供unit的扫描信息,unit行为及依赖关系等
  • [Service]:与特定类型相关的专用选项;此处为Service类型
  • [Install]:定义由“systemctl enable及systemctl disable”命令在实现服务启用或禁用时用到的一些选项

unit段常用选项

  • Description:描述信息 After:定义unit的启动次序,表示当前unit应该晚育那些unit启动,其功能与before相反 Requires:依赖到的其他units,强依赖,被一来的units无法激活时,当前unit即无法激活 Wants:依赖到的其他units,弱依赖 Conflicts:定义units间的冲突关系

Service段常用选项

  • Type:定义硬性ExecStart及相关参数的功能的unit进程启动类型
  • simple:默认值;这个daemon主要有ExecStart接的指令串来启动,启动后常驻于内存中
  • forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务原生父程序在启动结束后就会终止
  • onshot:用于执行一项任务,随后立即退出的服务,不会常驻于内存中
  • notify:与simple相同,但约定服务会在就绪后想systemd发送一个信号,需要配合NotifyAccess来让Systemd接收消息
  • idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才只能即可的服务
  • EnvironmentFile:环境配置文件
  • ExeStart:指明启动unit要运行命令或脚本的绝对路径
  • ExeStartPre:ExecStart前运行
  • ExeStartPost:ExecStart后运行
  • ExecStop:指明停止unit要运行的命令或脚本
  • Restart:当设定Restart=1时,则当次daemon服务意外终止后,会在此自动启动此服务

Install段常用选项

  • Alias:别名(可使用systemctl command Alial.service) RequiredBy:被那些units所依赖,强依赖 WantedBy:被那些units所依赖,弱依赖 Also:安装本服务的时候还要安装别的相关服务 注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载次配置文件,而后可以选择重启:systemctl daemon-reload
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linux知识积累 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Systemd 入门教程:命令篇
Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。
咻一咻
2020/05/29
1.1K0
centos7系统服务管理
systemd是RH7系列操作系统开始启用新的系统和服务管理器。它被设计为与sysv init脚本向后兼容,并提供了一些功能,例如在引导时并行启动系统服务,按需激活守护程序或基于依赖关系的服务控制逻辑。
拓荒者
2019/03/16
1.3K0
CentOS7/RHEL7 systemd详解
目录 1. 为什么是systemd (1) 关于Linux服务管理 (2) SysV init的优缺点 (3) UpStart的改进 (4) systemd的诞生 (5)为什么systemd能做到启动很快 2. SysV init介绍 (1) 什么是SystemV (2)SysV init的运行级别 (3)SysV init运行顺序 (4)SysV init和系统关闭 (5)SysV init的管理和控制功能 3. systemd的特性 (1)systemd解决了那些问题? (2)systemd的争议在哪里? (3)systemd能更彻底的结束服务进程 4. CentOS 7的systemd特性 (1)套接字服务保持激活功能 (2)进程间通讯保持激活功能 (3)设备保持激活功能 (4)文件路径保持激活功能 (5)系统状态快照 (6)挂载和自动挂载点管理 (7)闪电并行启动 (8)单元逻辑模拟检查 (9)和SysV init向后兼容 5. 如何分析衡量systemd启动速度 (1)查看详细的每个服务消耗的启动时间 (2)查看严重消耗时间的服务树状表 (3)打印分析图及其他命令 6. CentOS 7的systemd向后兼容 (1)systemd对运行级别支持有限。 (2)systemd不支持像init脚本那样的个性化命令。 (3)systemd不支持和没有从systemd启动的服务通讯。 (4)systemd可以只停止运行的服务 (5)不能从标准输出设备读到系统服务信息。 (6)systemd不继承任何上下文环境。 (7)SysV init脚本依赖性 (8)超时机制 7. systemd服务管理 (1) 什么是单元 (2)systemd的服务管理 (3)服务详细信息查看 8. 使用systemd target (1)怎样知道一个目标需要哪些进程服务? (2)target与运行级别 (3)target管理 9. 关闭、暂停、休眠系统 10. 通过systemd管理远程系统 11. 创建和修改systemd单元文件 (1)单元文件概述 (2)理解单元文件结构 (3)创建自定义的单元文件 (4)创建emacs.service例子: (5)创建第二个sshd服务的例子 (6)修改已经存在的单元文件 (7)扩展默认单元配置文件配置 12. 单元实例化 13. VNC SERVER配置 1.为什么是systemd
力哥聊运维与云计算
2019/06/28
1.7K0
CentOS7/RHEL7 systemd详解
CENTOS7 SYSTEMCTL说明 原
PS:RHEL7和CentOS7出来有一段时间了,拿出点时间研究下,有几个地方跟6和5系列相比改变比较大,估计不少童鞋有点不太习惯。下面简要举例说明改变比较大的要点:
domain0
2018/08/02
6680
Linux 命令(107)—— systemctl 命令
systemctl 命令是 systemd 系统和服务的管理命令,systemctl 是与 systemd 交互的主要工具,其实现的功能包含了 service 和 chkconfig 这两个命令的功能。
恋喵大鲤鱼
2019/12/20
2.8K0
关于 Linux 中 systemd 的一些笔记
傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波
山河已无恙
2023/01/30
7260
关于 Linux 中 systemd 的一些笔记
systemd服务管理详解与子命令一览
描述:系统启动和服务器守护进程管理器,负责在系统启动或运行时激活系统资源,并且管理服务器进程和其它进程,可以说他是Linux的小伙伴系统启动时候最先都是运行的systemd;
全栈工程师修炼指南
2022/09/28
2.1K0
systemd服务管理详解与子命令一览
systemd 使用教程【转】
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
保持热爱奔赴山海
2019/09/18
1.1K0
systemd 使用教程【转】
CentOS6/7 配置守护进程
CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。
Chester Chen
2022/12/19
9850
【Linux】《how linux work》第六章 用户空间如何启动
The point where the kernel starts its first user-space process, init, is significant—not just because that’s where the memory and CPU are finally ready for normal system operation, but because that’s where you can see how the rest of the system builds up as a whole. Prior to this point, the kernel executes a well-controlled path of execution defined by a relatively small number of software developers. User space is far more modular. It’s much easier to see what goes into the user space startup and operation. For the adventurous, it’s also relatively easy to change the user space startup because doing so requires no low-level programming.
阿东
2024/04/10
2630
【Linux】《how linux work》第六章 用户空间如何启动
centos7上systemd详解 原
CentOS 7继承了RHEL 7的新的特性,如强大的systemd, 而systemd的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变, 也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,同时变的简单而易用了许多。
拓荒者
2019/04/19
1.1K0
centos systemctl_正在不使用中
CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。
全栈程序员站长
2022/09/30
3500
Systemd 入门教程:命令篇
Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。 本文介绍它的基本用法,分为上下两篇。今天介绍它的主要命令,下一篇介绍如何用于实战。 一、由来 历史上,Lin
ruanyf
2018/04/13
9790
Systemd 入门教程:命令篇
第十六章.Linux系统管理-开机启动流程
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
2.5K0
第十六章.Linux系统管理-开机启动流程
Linux 温习(四): Systemd 分析与应用
这些进程不与任何终端关联,并且无论用户的身份如何,都在后台运行。这些进程的父进程是 PID(进程号)为 1 的进程,PID 为 1 的进程只在系统关闭时才会被销毁,这些进程会在后台一直运行。
陈大剩博客
2023/02/17
6530
Linux 温习(四): Systemd 分析与应用
Linux系统服务神器:systemctl的简单配置与使用
以前使用Ubuntu和CentOS,一般使用SysV init(就是以前使用的service)进行进程的开机自启和进程守护。
Mintimate
2022/04/08
6.8K1
Linux系统服务神器:systemctl的简单配置与使用
Cron,Chkconfig,Systemd,Target
Cron : # cat /etc/crontab //查看设置任务计划的(配置文件)格式 #crontab -e //自定义计划内容 0 3 * * * /bin/bash /usr/local/sbin/123.sh >>/tmp/1.txt 2>>/tmp/2.txt 详解:每天的3点执行/usr/local/sbin/ 23.sh 此命令,并且把正确的日志输出到1.txt;错误的信息输出到2.txt 0 3 1-10 */2 2,5 /usr/bin/find /tmp/ -type f -mtim
老七Linux
2018/05/09
1.2K0
可能是史上最全面易懂的 Systemd 服务管理教程!( 强烈建议收藏 )
Systemd 是一系列工具的集合,其作用也远远不仅是启动操作系统,它还接管了后台服务、结束、状态查询,以及日志归档、设备管理、电源管理、定时任务等许多职责,并支持通过特定事件(如插入特定 USB 设备)和特定端口数据触发的 On-demand(按需)任务。
iMike
2019/09/29
70.7K0
可能是史上最全面易懂的 Systemd 服务管理教程!( 强烈建议收藏 )
systemd - CentOS 7进程守护&监控
运行环境为CentOS 7系统,我们开发了一个程序,需要在开机时启动它,当程序进程crash或者开机之后,守护进程立即拉起进程。
sunsky
2020/08/20
2.7K0
Systemd管理服务
Systemd 是一系列工具的集合,其作用也远远不仅是启动操作系统,它还接管了后台服务、结束、状态查询,以及日志归档、设备管理、电源管理、定时任务等许多职责,并支持通过特定事件(如插入特定 USB 设备)和特定端口数据触发的 On-demand(按需)任务。
mikelLam
2022/08/15
6830
相关推荐
Systemd 入门教程:命令篇
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文