第十七章 认识系统服务 (daemons)

本文介绍了系统服务与daemon的概念,重点讲解了system V的init管理和现代的systemd的区别与优势。systemd使用unit分类管理服务,通过systemctl命令实现服务的启动、观察和管理。文章还探讨了systemd的配置文件结构和管理不同操作环境的target单位。
摘要由CSDN通过智能技术生成

什么是daemon与服务(service)

服务是功能的体现。daemon是实现服务的进程。通常不用将二者做详细区分。daemon是一个程序执行后的程序,daemon本身这个程序的命名通常是在服务的名称后加d。这个d是daemon的意思。

早期的system V的 init管理行为中的主要分类(Optional)

system V是Unix的旧版本。当时,用SysV的init脚本程序启动系统服务。系统首先调用的程序是init,再由init去唤醒其他服务。

init的管理机制的特点:
1.对服务的操作有:启动,关闭,重启,状态观察。所有服务启动脚本都在/etc/init.d目录下。命令格式如下:

/etc/init.d/daemon  command #command 可以是start/stop/restart/status。分别对应启动/关闭/重启/状态观察

2.服务启动的方式分为独立启动(stand alone)和被一个总管程序(super daemon)管理。前置服务独立启动,且该服务常驻内存,反应速度快。后者由xinetd/inetd这种总管程序提供socket对应或port对应的管理。用户由请求时,由总管程序唤醒相应的服务程序。缺点是唤醒服务慢。
3.服务的相依性:服务的实现常常需要其他服务的支持。inti再管理员手动处理某服务时,无法协助唤醒支持它的服务。
4.执行等级分类:开机内核调用init,后init据用户自订的使用等级(runlevel)来唤醒不同的服务,以进入不同的操作界面。Linux有7个执行等级(0~6)。1是单人维护模式、3是纯文本模式、5是文字加图形界面模式。

不同执行等级的启动脚本是通过 /etc/rc.d/rc[0-6]/SXXdaemon 链接到 /etc/init.d/daemon ,链接文件名 (SXXdaemon)的意义为:S为启动该服务,XX是数字,为启动的顺序。由于有 SXX 的设置,因此在开机时可以“依序执行”所有需要的服务, 同时也能解决相依服务的问题。这点与管理员自己手动处理不同。
5.制定执行等级默认要启动的服务:若要创建SXXdaemon文件,则不用管理员手动创建链接文件。可执行以下指令:

chkconfig daemon on/off  #默认启动/不启动
chkconfig daemon --list daemon  #观察默认为启动否

6.runlevel的切换:从纯命令行(runlevel 3)切换到图形界面(runlevel 5),执行“init 5”即可关闭原来服务,打开runlevel5所需的服务。

systemd使用的unit分类

从CentOS 7.x后,用init启动脚本来启动其他服务的方式被systemd这个启动服务管理机制代替。systemd的优点如下
1.同时处理所有服务,开机快:init 启动脚本即使对不相依的服务也是“一项一项任务依序启动”的。当os和硬件支持多核心架构时,systemd让所有服务同时启动的方式自然更快。
2.一经要求就回应的 on-demand 启动方式: 整个systemd 仅由一个systemd 服务配合 systemctl 指令来处理,指令不再繁杂。且systemd由于常驻内存,因此任何要求 (on-demand) 都可以立即处理后续的 daemon 启动的任务。
3.服务相依性的自我检查和自动启动:systemd会自动启动服务的支撑服务。
4.依据daemon对服务分类:systemd将每个daemon执行脚本称为一个服务单位(unit),每个unit根据功能归入不同的类型(type)。类别有:系统服务(service)、数据监听与交换的插槽档服务 (socket)、储存系统状态的快照类型(snapshot)、提供不同类似执行等级分类的操作环境 (target),path,timer等类型。(类似独立服务与总管程序的分类)
5.将多个 daemons 集合成为一个群组:systemd 将许多的功能集合成为一个target 项目。1个target==许多daemon。(类似runlevel)
6.向下相容旧有的 init 服务脚本:init 启动脚本也能够通过 systemd 来管理。

init中systemd无法取代的部分:
只有执行等级1,3,5可以在systemd的某些target类型中有对应;
一个管理程序systemctr管理全部的systemd,systemctr不可自订参数,支持的语法有限制(命令形式不够多样);
不是用systemctr启动的服务,systemd无法检测到;
systemd 启动过程中,无法与管理员过 standard input 传入讯息!因此,自行撰写systemd 的启动设置时,务必要取消互动机制(连通过启动时传进的标准输入讯息也要避免!)!!!
systemd 的配置文件所在目录 .

/usr/lib/systemd/system/  #服务的启动脚本设置。类似/etc/init.d目录
/run/systemd/system/ 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值