首页 > 其他分享 >第17章 认识系统服务(daemons)

第17章 认识系统服务(daemons)

时间:2023-07-31 11:15:40浏览次数:29  
标签:systemd 服务 target 17 认识 system systemctl daemons unit

第17章 认识系统服务(daemons)

17.1 什么是daemon与服务(service)

  简单地说,系统为了某些功能就必须要提供一些服务(不论是系统本身还是网络方面),这个服务就称为service。但是service的提供总是需要程序的运作吧!否则如何执行呢?所以达成这个service的程序我们就称呼他为daemon啰!举例来说,达成循环型例行性工作排程服务(service)的程序为crond这个daemon啦!

17.1.2 systemd使用的unit分类

  从CentOS 7.x之后,RedHat系列的distribution放弃沿用多年的System V开机启动服务的流程,就是前一小节提到的init启动脚本的方法,改用systemd这个启动服务管理机制~那么systemd有什么好处呢?

  • 平行处理所有服务,加速开机流程:
  • 一经要求就响应的on-demand启动方式
  • 服务相依性的自我检查
  • 依daemon功能分类
  • 将多个daemon集合成为一个群组
  • 向下兼容旧有的init服务脚本
  • systemd的配置文件放置目录
      基本上,systemd将过去所谓的daemon执行脚本通通称为一个服务单位(unit),而每种服务单位依据功能来区分时,就分类为不同的类型(type)。基本的类型有包括系统服务、数据监听与交换的插槽档服务(socket)、储存系统状态的快照类型、提供不同类似执行等级分类的操作环境(target)等等。哇!这么多类型,那设定时会不会很麻烦呢?其实还好,因为配置文件都放置在底下的目录中:
    • /usr/lib/systemd/system/:每个服务最主要的启动脚本设定,有点类似以前的/etc/init.d底下的文件
    • /run/systemd/system/:系统执行过程中所产生的服务脚本,这些脚本的优先序要比/usr/lib/systemd/system/高!
    • /etc/systemd/system/:管理员依据主机系统的需求所建立的执行脚本执行优先序又比/run/systemd/system高喔!

  也就是说,到底系统开机会不会执行某些服务其实是看/etc/systemd/system/底下的设定,所以该目录底下就是一大堆连结档。而实际执行的systemd启动脚本配置文件,其实都是放置在/usr/lib/systemd/system/底下的喔!因此如果你想要修改某个服务启动的设定,应该要去/usr/lib/systemd/system/底下修改才对!/etc/systemd/system/仅是连结到正确的执行脚本配置文件而已。所以想要看执行脚本设定,应该就得要到/usr/lib/systemd/system/底下去查阅才对!

  • systemd的unit类型分类说明
    那/usr/lib/systemd/system/以下的数据如何区分上述所谓的不同的类型(type)呢?很简单!看扩展名!举例来说,我们来瞧瞧上一章谈到的vsftpd这个范例的启动脚本设定,还有crond与纯文本模式的multi-user设定:
    ll /usr/lib/systemd/system/ | grep -E '(vsftpd|multi|cron)'
扩展名 主要服务功能
.service 一般服务类型(service unit)
.socket 内部程序数据交换的插槽服务(socket unit)
.target 执行环境类型(target unit),其实是一群unit的集合
.mount .automount 文件系统挂载相关的服务
.path 侦测特定文件或目录类型(path unit)
.timer 循环执行的服务

17.2 透过systemctl管理服务

  基本上,systemctl这个启动服务的机制,主要是透过一只名为systemctl的指令来处理的!

systemctl [command] [unit]
command主要有:
start : 启动
stop : 关闭
restart : 关闭后再启动
reload: 重载配置文件,让设定生效
enable: 设定下次开机时,后接的unit会被启动
disable: 设定下次开机时,后接的unit不会被启动
status: 列出unit目前的状态
is-active: 目前有没有正在运行中
is-enable: 开机时有没有预设要启用这个unit

17.2.2 透过systemctl观察系统上所有的服务

systemctl [command] [--type=TYPE] [--all]
command:
    list-units : 依据unit列出目前有启动的unit。若加上--all都会列出没启动的。
    list-unit-files: 依据/usr/lib/systemd/system/内的文件,将所有文件列表说明。
    --type=TYPE: 就是之前提到的unit type,主要有service,socket,target等

17.2.3 透过systemctl管理不同的操作环境(target unit)

  列出跟操作界面比较有关的target项目:
systemctl list-units --type=target --all
  在CentOS 7.1的预设情况下,就有26个target unit耶!而跟操作界面相关性比较高的target主要有底下几个:

  • graphical.target: 就是文字加上图形界面,这个界面已经包含了底下的multi-user.target项目!
  • multi-user.target:纯文本模式
  • rescue.target: 在无法使用root登入的情况下,systemd在开机时会多加一个额外的暂时系统,与你原本的系统无关。这时你可以取得root的权限来维护你的系统。但是这个额外系统,因此可能需要动到chroot的方式来取得你原有的系统喔!
  • emergency.target: 紧急处理系统的错误,还是需要使用root登入的情况,在无法使用rescue.target时,可以尝试使用这种模式!
  • shutdown.target:关机
  • getty.target: 可以设定你需要几个tty之类的,如果想要降低tty的项目,可以修改这个东西的配置文件
systemctl [command] [unit.target]
选项与参数:
command:
    get-default: 取得目前的target
    set-default: 设定后面接的target成为默认的操作模式
    isolate: 切换到后面接的模式
范例:
systemctl isolate multi-user.target
systemctl isolate graphical.target

17.2.4 透过systemctl分析各服务之间的相依性

systemctl list-dependencies [unit] [--reverse]
选项与参数:
--reverse: 反向追踪谁使用这个unit的意思!

17.2.6 关闭网络服务

  如何观察网络端口?
netstat -tlunp

systemctl list-units --all | grep avahi-daemon
systemctl stop avahi-daemon.service
systemctl stop avahi-daemon.socket
systemctl disable avahi-daemon.service avahi-daemon.socket
netstat -tlunp

17.3.1 systemctl配置文件相关目录简介

  现在我们知道服务的管理是透过systemd,而systemd的配置文件大部分放置于/usr/lib/systemd/system/目录内。但是RedHat官方文件指出,该目录的文件主要是原本软件所提供的设定,建议不要修改!而要修改的位置应该放置于/etc/systemd/system/目录内。

标签:systemd,服务,target,17,认识,system,systemctl,daemons,unit
From: https://www.cnblogs.com/evan-whc/p/17592903.html

相关文章

  • 第18章 认识与分析登录档
    第18章认识与分析登录档18.1什么是登录档什么是登录档呢?简单地说,就是记录系统活动信息的几个文件,例如:何时、何地(来源IP)、何人(什么服务名称)、做了什么动作(讯息登录啰)。换句话说就是:记录系统在什么时候由哪个程序做了什么样的行为时,发生了何种的事件等等。18.1.1CentOS7......
  • 《VTK学习笔记》-01 VS2017+QT5.14.2+VTK9.2.6 环境搭建
    参考win10下在Qt中使用VTK(安装VS2017+安装QT5.9.9+编译配置VTK8.2.0)_如何在qt中使用vtk_HBybhy的博客-CSDN博客其他问题就不说了,主要是VS打开cmaker编译后的代码,先生成,等待半个小时完成后,选择右击INSTALL-->仅用于项目-->仅生成INSTALL,等进度条走完vtk_res文件夹里出现了一些文件......
  • 深入探究Java 17中的外部函数和内存API
    导言Java17作为JDK的最新版本,带来了许多令人兴奋的新特性和改进。在本篇博客中,我们将聚焦于Java17中的两个重要主题:外部函数(ForeignFunction)和内存API(MemoryAPI)。这两个功能的引入为Java开发者们提供了更多的灵活性和性能优势,让我们一起深入探究它们的作用和用法。一、外部函数......
  • Java面试题 P17:Redis篇:Redis使用场景-缓存-缓存穿透
    什么是缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把数据库压垮。  互斥锁代码:1privatefinalReadWriteLockreadWriteLock=newReentrantReadWriteLock();2privatefinalLock......
  • 175 狗屎
    打学时,真的是一件狗屎的事情今天又是倒霉的一天昨天一天的学时白费是因为娟姐没和我说要开定位,和别人都说了今天啊,各种不幸,打满了四个钟,但目前为止(22:25)才成功了1.3个小时,还剩一个小时审核中,这个效率真的是笑嘻嘻了,sb东西,,啊啊啊这样下去也不知道要折磨我多少天才行每次一到我......
  • vivado生成Bitstream报错[Vivado 12-1345] Error(s) found during DRC. Bitgen not ru
    写了一个很简单的程序,2-4译码器。moduledecoder2to4(inputin1,in0,outputreg[3:0]out);always@(*)beginif({in1,in0}==2'b00)out=4'b1111;elseif({in1,in0}==2'b01)out=4......
  • 每日总结(补档7月17日)
    在经历了昨天的不愉快事件后,导游就是一副家里人没了的表情,他越是难受我越是开心,谁让你耽误我们一天时间的,活该。今天要去附近的俄罗斯风情村,这一进村子,确实是有俄罗斯的感觉,村民几乎全是俄罗斯族的人,估计很多都是之前从俄罗斯过来的,这也说不准,倒也没什么特别的东西,列巴和巧克力,纯......
  • 17_Spring_事务环境搭建
    17_Spring_事务环境搭建通过张三给李四转账案例演示事务的控制1数据库中准备表格applicationContext.xmljdbc.properties见上节课2项目中准备实体类packagecom.msb.pojo;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;i......
  • 国产MCU-CW32F030开发学习-BH1750模块
    国产MCU-CW32F030开发学习-BH1750模块硬件平台CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件BH1750数字型光照强度传感器BH1750BH1750是一款数字型光照强度传感器,能够获取周围环境的光照强度。其测量范围在0~65535lx。lx勒克斯,是光照强度的单位。BH1750可用于调节......
  • 17-数仓基础理论
    1.数据仓库数据仓库(DataWarehouse,简称数仓、DW)是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(DecisionSupport)。数据仓库本身并不“生产”任何数据,其数据来源于不同外部系统;同时数据仓库自身也不需要“消费”任何的......