金鱼哥戏说RHCSA认证:十二、服务管理

简介: 第十二章 服务管理
🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝


本章节介绍如何进行服务管理。systemd也是6的系统和7的系统的一个重要区别,有了systemd的基础,才可以更好地了解服务管理,也为日后自己编写systemd打下基础。

📜12.1 systemd

📑12.1.1 systemd 特性

systemd:从 rhel 7 版本之后开始用 systemd 实现init进程,系统启动和服务器守护进程管理器,
负责在系统启动或运行时,激活系统资源,服务器进程和其它进程

Systemd新特性

  • 系统引导时实现服务并行启动
  • 按需启动守护进程
  • 自动化的服务依赖关系管理
  • 同时采用socket式与D-Bus总线式激活服务
  • socket与服务程序分离
  • 向后兼容sysv init脚本
  • 使用systemctl 命令管理,systemctl命令固定不变,不可扩展,非由systemd启动的服务,
    systemctl无法与之通信和控制
  • 系统状态快照

systemd核心概念:unit(单元)

unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听
socket、保存的系统快照以及其它与init相关的信息

Unit类型:

#查看unit类型
[root@servera ~]# systemctl -t help
Available unit types:
service
socket
target
device
mount
automount
swap
timer
path
slice
scope
  • service unit: 文件扩展名为.service, 用于定义系统服务
  • Socket unit: .socket, 定义进程间通信用的socket文件,也可在系统启动时,延迟启动服务,实现
    按需启动
  • Target unit: 文件扩展名为.target,用于模拟实现运行级别 init 0-6
  • Device unit: .device, 用于定义内核识别的设备
  • Mount unit: .mount, 定义文件系统挂载点
  • Snapshot unit: .snapshot, 管理系统快照
  • Swap unit: .swap, 用于标识swap设备
  • Automount unit: .automount,文件系统的自动挂载点
  • Path unit: .path,用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激
    活服务,如:spool 目录

unit的配置文件

/usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system:管理员建立的执行脚本,类似于/etc/rcN.d/Sxx的功能,比上面目录优先运行

📜12.2 systemctl管理工具

📑12.2.1 systemctl管理系统服务service unit

命令:

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 mask name.service

#取消禁止
systemctl unmask name.service

#查看某服务当前激活与否的状态:
systemctl is-active name.service

#查看所有已经激活的服务:
systemctl list-units --type|-t service

#查看所有服务:
systemctl list-units --type service --all|-a

#设定某服务开机自启,相当于chkconfig name on
systemctl enable name.service

#设定某服务开机禁止启动:相当于chkconfig name off
systemctl disable name.service

#查看所有服务的开机自启状态,相当于chkconfig --list
systemctl list-unit-files --type service

#用来列出该服务在哪些运行级别下启用和禁用:chkconfig –list name
ls /etc/systemd/system/*.wants/name.service

#查看服务是否开机自启:
systemctl is-enabled name.service

#列出失败的服务
systemctl --failed --type=service

#开机并立即启动或停止
systemctl enable --now httpd
systemctl disable --now httpd

#查看服务的依赖关系:
systemctl list-dependencies name.service

#杀掉进程:
systemctl kill unitname

服务状态

#显示状态
systemctl list-unit-files --type service --all
  • loaded Unit配置文件已处理
  • active(running) 一次或多次持续处理的运行
  • active(exited) 成功完成一次性的配置
  • active(waiting) 运行中,等待一个事件
  • inactive 不运行
  • enabled 开机启动
  • disabled 开机不启动
  • static 开机不启动,但可被另一个启用的服务激活
  • indirect 重定向到别处

范例:systemctl 命令示例

#显示所有单元状态
systemctl 或 systemctl list-units

#只显示服务单元的状态
systemctl --type=service

#显示sshd服务单元
systemctl –l status sshd.service

#验证sshd服务当前是否活动
systemctl is-active sshd

#启动,停止和重启sshd服务
systemctl start sshd.service
systemctl stop sshd.service
systemctl restart sshd.service

#重新加载配置
systemctl reload sshd.service

#列出活动状态的所有服务单元
systemctl list-units --type=service

#列出所有服务单元
systemctl list-units --type=service --all

#查看服务单元的启用和禁用状态
systemctl list-unit-files --type=service

#列出依赖的单元
systemctl list-dependencies sshd

#验证sshd服务是否开机启动
systemctl is-enabled sshd

#禁用network,使之不能自动启动,但手动可以
systemctl disable network

#启用network
systemctl enable network

#禁用network,使之不能手动或自动启动
systemctl mask network

#启用network
systemctl unmask network

📑12.2.2 service unit文件格式

/etc/systemd/system:系统管理员和用户使用
/usr/lib/systemd/system:发行版打包者使用

帮助参考:

systemd.directives(7),systemd.unit(5),systemd.service(5), systemd.socket(5),
systemd.target(5),systemd.exec(5)

unit 格式说明:

  • 以 “#” 开头的行后面的内容会被认为是注释
  • 相关布尔值,1、yes、on、true 都是开启,0、no、off、false 都是关闭
  • 时间单位默认是秒,所以要用毫秒(ms)分钟(m)等须显式说明

service unit file文件通常由三部分组成:

  • [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的主要服
      务。原生父程序在启动结束后就会终止
    • oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中
    • dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作.因
      此通常也要同时设定BusNname= 才行
    • notify:在启动完成后会发送一个通知消息。还需要配合 NotifyAccess 来让 Systemd 接收消
    • idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这
      类的daemon通常是开机到最后才执行即可的服务
  • EnvironmentFile:环境配置文件
  • ExecStart:指明启动unit要运行命令或脚本的绝对路径
  • ExecStartPre: ExecStart前运行
  • ExecStartPost: ExecStart后运行
  • ExecStop:指明停止unit要运行的命令或脚本
  • Restart:当设定Restart=1 时,则当次daemon服务意外终止后,会再次自动启动此服务
  • PrivateTmp:设定为yes时,会在生成/tmp/systemd-private-UUID-NAME.service-XXXXX/tmp/
    目录

Install段的常用选项:

  • Alias:别名,可使用systemctl command Alias.service
  • RequiredBy:被哪些units所依赖,强依赖
  • WantedBy:被哪些units所依赖,弱依赖
  • Also:安装本服务的时候还要安装别的相关服务

注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启

systemctl daemon-reload

📑12.2.3 systemctl管理运行级别

target units:相当于Rhel 6之前的runlevel ,unit配置文件:.target

ls /usr/lib/systemd/system/*.target
systemctl list-unit-files --type target --all

和运行级别对应关系init

0 ==> runlevel0.target, poweroff.target
1 ==> runlevel1.target, rescue.target
2 ==> runlevel2.target, multi-user.target
3 ==> runlevel3.target, multi-user.target
4 ==> runlevel4.target, multi-user.target
5 ==> runlevel5.target, graphical.target
6 ==> runlevel6.target, reboot.target

查看依赖性:

systemctl list-dependencies graphical.target

级别切换:相当于 init N

systemctl isolate name.target

进入默认target

systemctl default

范例:

#切换至字符模式,相当于init 3
systemctl isolate multi-user.target

💡总结

RHCSA认证作为基础认证,涉及的基础内容需要大家好好进行学习并巩固。有良好的基础才能更上一层楼。
好好加油,可以噶🤪。

以上就是【金鱼哥】对 第十二章 服务管理 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

目录
相关文章
|
运维 安全 Linux
|
运维 Shell Linux
|
运维 监控 安全
|
运维 监控 测试技术
|
运维 监控 网络协议
|
运维 监控 网络协议
|
存储 缓存 运维
|
运维 监控 安全
|
运维 安全 Ubuntu
|
缓存 运维 监控