认识系统服务

daemon与service

达成某个服务(service)需要一个守护进程(daemon)在后台运行。

  • 实现 ssh 服务,需要 sshd 这个守护进程
  • 实现 mysql 服务,需要 mysqld 这个守护进程
  • 实现 cron 服务,需要 crond 这个守护进程

daemon守护进程通常在service服务的名称后加上一个d

init管理下daemon的主要分类

开机过程中系统核心第一支呼叫的程序是 init,然后 init 唤起所有的系统所需的服务。

所有服务的启动脚本都放在 /etc/init.d/ 目录下

启动、关闭、查看服务

启动:/etc/init.d/服务名 start

停止:/etc/init.d/服务名 stop

重启:/etc/init.d/服务名 restart

查看:/etc/init.d/服务名 status

服务启动分类

根据服务是独立启动或被一支总管程序管理分为两类

独立启动(stand alone):服务独立启动,该服务直接常驻内存,为本机或用户提供服务,反应速度快。

总管程序:(super daemon):由特殊的xinetd或inetd这两个总管程序提供socket对应或port对应的管理。当没有用户需求某socket或port时,所需要的服务不会被启动;当有用户需求时,xinetd会去唤醒对应的服务程序;当需求结束时,被唤醒的服务也会被结束。反应稍慢。

服务相依性

init在管理员手动处理服务时,无法唤醒相依的服务

启动级别

共7个等级:

  • 0级:是Linux系统最低和最重要的级别,它表示关机,是关机模式,一般是系统重启或者停止时使用。
  • 1级:是进入系统修复模式,一般用于系统出现故障时调试使用。分为单用户模式和多用户模式两种情况,在单用户模式下进行一些系统检测、修复工作,在多用户模式下开启系统的基本服务。
  • 2级:是Linux系统的正常运行状态,一般用于在非安全网络环境中使用,开启常规的系统服务。
  • 3级:纯文本模式,用户级,它开启了X Window系统服务,一般用于安全的网络环境中。能够实现X Window系统的图像化操作,可以完成网络连接、文件传输和输入/输出工作等。
  • 4级:为保留状态,方便用户在图形化环境下改变服务的起停状态,这种级别并不是必须的,可以把它修改成第3级或者更低的级别。
  • 5级:为完全图形化模式,Linux系统在这种模式下自动启动X Window系统,并配置对应的登录用户以及密码,可以从远程服务器启动桌面环境,应用于安全的网络环境。
  • 6级:为重新启动,一般用于系统重启时使用,系统会自动开启服务,并在重启后重新加载所有服务。

各个等级的启动脚本是通过 /etc/rc.d/rc[0-6]/Sxxdaemon 链接到 /etc/init.d/daemon;Sxxdaemon功能为:S表示启动该服务,xx是数字,代表启动顺序,如此开机时可依序启动所需服务,同时解决服务相依问题。

设定开机启动

开机启动:chkconfig 服务名 on

开启不启动:chkconfig 服务名 off

查看是否开机启动:chkconfig --list 服务名

切换启动级别

init 数字

systemd管理下的unit分类

centos7以后,弃用init,改用systemd。优点如下:

  1. 平行处理所有服务,加速开机流程。旧init启动脚本是一项一项依序启动,systemd可以使所有的服务同时启动
  2. 极速响应。全部服务仅由一支systemd服务搭配systemctl命令管理,且systemd常驻内存,响应快
  3. 服务相依性的自我检查。systemd可自定义服务相依性的检查,若A服务依赖B服务才能启动,当手动启动A服务时,systemd会自动帮助启动B服务
  4. 依据daemon功能分类。systemd定义所有的服务为一个服务单元unit,并将该unit归类到不同的服务类型type,共12种。
ServiceUnit用于定义一个系统服务
TargetUnit用于将多个Unit组成一个组
DeviceUnit用于描述硬件设备
MountUnit用于文件系统的挂载点
AutomountUnit用于自动挂载点
PathUnit用于定义文件或路径
ScopeUnit用于描述不是由Systemd启动的外部进程
SliceUnit用于进程组
SnapshotUnit用于Systemd快照,可以回溯到某个快照
SocketUnit用于进程间通信的socket
SwapUnit用于swap文件
TimerUnit用于定时器

注意:若某个服务是管理员手动启动的,不是使用systemctl启动的,那么systemd将无法侦测到该服务且无法管理

systemd配置文件存放目录

/etc/systemd/system

这是系统默认的systemd配置文件目录。在这个目录中,可以创建和修改自定义的systemd服务单元配置文件。这些配置文件定义了服务的名称、依赖项、启动顺序、运行环境等等。

/usr/lib/systemd/system

这是系统级别的systemd配置文件目录。在这个目录中,通常包含一些系统级别的服务和应用程序的配置文件。这些配置文件通常由软件包管理器在安装过程中自动创建和更新。

/usr/local/lib/systemd/system

这是用户级别的systemd配置文件目录。在这个目录中,可以创建和修改用户级别的服务单元配置文件。这些配置文件只在当前用户的主目录下有效,不会影响其他用户。

/run/systemd/system

这是运行时创建的systemd配置文件目录。在这个目录中,会存储正在运行的服务单元的配置文件。这些配置文件只在当前会话中有效,当系统重新启动时,这些配置文件会被清除。

systemctl管理服务

管理单一服务

systemctl 命令

常见状态

  • active(running):正在运行
  • active(exited):仅执行一次就正常结束的进程
  • active(waiting):正在执行当中,需要等待其它事件进来才能继续处理
  • inactive(dead):没有运行

预设状态

  • enabled:开机自启
  • disabled:开启不自启
  • static:自己不能启动,可被其它 enabled 的服务唤醒,相依性
  • mask:无论如何都无法启动,因为已被强制注销(非删除)。systemctl unmask可恢复
查看httpd服务状态
[root@wenzi ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server    描述服务Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)    服务已加载,未设置开机自启,厂商预设不开机自启Active: active (running) since Wed 2023-10-18 04:56:09 CST; 3s ago    httpd服务状态
...

强制注销服务

[root@wenzi ~]# systemctl mask httpd
Created symlink from /etc/systemd/system/httpd.service to /dev/null.
[root@wenzi ~]# systemctl status httpd
● httpd.serviceLoaded: masked (/dev/null; bad)Active: inactive (dead)Oct 18 04:56:09 wenzi.localhost systemd[1]: Starting The Apache HTTP Server...
Oct 18 04:56:09 wenzi.localhost httpd[68352]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using wenzi.localhost. Set the 'ServerNam...this message
Oct 18 04:56:09 wenzi.localhost systemd[1]: Started The Apache HTTP Server.
Oct 18 05:06:06 wenzi.localhost systemd[1]: Stopping The Apache HTTP Server...
Oct 18 05:06:07 wenzi.localhost systemd[1]: Stopped The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@wenzi ~]# systemctl start httpd
Failed to start httpd.service: Unit is masked.恢复
[root@wenzi ~]# systemctl unmask httpd
Removed symlink /etc/systemd/system/httpd.service.

注销的实质是让启动的脚本指向 /dev/null

观察服务

systemctl 等价于 systemctl list-units

列出所有已安装的unit

[root@wenzi ~]# systemctl list-unit-files
UNIT FILE                                     STATE
...
crond.service                                 enabled
httpd.service                                 disabled

只列出service类型的unit

[root@wenzi ~]# systemctl list-units --type=serviceUNIT                        LOAD   ACTIVE SUB     DESCRIPTIONauditd.service              loaded active running Security Auditing Servicecrond.service               loaded active running Command Scheduler

查看socket服务的socket file 文件位置

[root@wenzi ~]# systemctl list-sockets
LISTEN                      UNIT                         ACTIVATES
/dev/log                    systemd-journald.socket      systemd-journald.service
/run/dbus/system_bus_socket dbus.socket                  dbus.service
/run/systemd/initctl/fifo   systemd-initctl.socket       systemd-initctl.service
/run/systemd/journal/socket systemd-journald.socket      systemd-journald.service
/run/systemd/journal/stdout systemd-journald.socket      systemd-journald.service
/run/systemd/shutdownd      systemd-shutdownd.socket     systemd-shutdownd.service
/run/udev/control           systemd-udevd-control.socket systemd-udevd.service
kobject-uevent 1            systemd-udevd-kernel.socket  systemd-udevd.service

查看所有服务与端口号的对应关系

[root@wenzi ~]# cat /etc/services
tcpmux          1/tcp                           # TCP port service multiplexer
tcpmux          1/udp                           # TCP port service multiplexer
rje             5/tcp                           # Remote Job Entry
rje             5/udp                           # Remote Job Entry
...
ssh             22/tcp                          # The Secure Shell (SSH) Protocol
...

管理不同操作环境(target unit)

和操作界面相关性较高的target主要有:

  • graphical.target:文字加图形界面,包含multi-user.target
  • multi-user.target:纯文本模式
  • rescue.target:额外的临时系统,当系统启动时遇到严重错误,无法使用root登录系统时,无法正常进入预期的运行级别(runlevel)时,系统会进入'rescue.target'。在这个模式下,系统会启动必要的服务以维持基本的功能,允许用户在系统上运行命令和修复问题
  • emergency.target:紧急处理系统的错误,需要使用root登录,当rescue.target不可用时,可采用此模式
  • shutdown.target:关机
  • getty.target:设计tty数量

永久设置为图形界面,重启生效

[root@wenzi ~]# systemctl get-default
multi-user.target
[root@wenzi ~]# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root@wenzi ~]# reboot

临时改变为图形界面,不重启即可生效

[root@wenzi ~]# systemctl isolate graphical.target

其它命令

systemctl poweroff系统关机
systemctl reboot重启
systemctl suspend进入暂停(睡眠)模式
systemctl hibernate进入休眠模式
systemctl rescue强制进入救援模式
systemctl emergency强制进入紧急救援模式

suspend:指的是除了内存以外的大部分机器部件都进入断电状态,并未实际关机,当唤醒机器时,数据会从内存中恢复,重启驱动大部分的机器硬件,开始正常工作,唤醒速度快。

hibernate:将系统状态保存到硬盘中,然后关闭所有设备,当唤醒机器时,数据从硬盘中读取,唤醒速度较慢

通过systemctl分析各服务之间相依性

multi-user.target 使用哪些unit

[root@wenzi ~]# systemctl list-dependencies multi-user.target
multi-user.target
● ├─auditd.service
● ├─crond.service
● ├─dbus.service
...

哪些unit使用multi-user.target

[root@wenzi ~]# systemctl list-dependencies multi-user.target --reverse
multi-user.target
● └─graphical.target

systemctl针对service类型的配置文件

相关目录

以vsftpd为例,若要额外修改 vsftpd.service 时,可参考:

  • /usr/lib/systemd/system/vsftpd.service        官方预设的service配置文件
  • /etc/systemd/system/vsftpd.service.d/custom.conf     建立 “预设service配置文件.d” 文件名的目录,再在该目录下建立配置文件 xxx.conf 即可,此目录下的配置会进入 /usr/lib/systemd/system/vsftpd.service
  • /etc/systemd/system/vsftpd.service.wants/*     此目录内的文件为链接文件,设定相依服务的关系。含义:启动vsftpd.service 之,然后启动此目录下的服务。
  • /etc/systemd/system/vsftpd.service.requires/*     此目录内的文件为链接文件,设定相依服务的关系。含义:启动vsftpd.service 之,先启动此目录下的服务。

xxx.service文件详解

以sshd.service为例

[root@wenzi ~]# cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

Unit部分

Description

服务的简介说明。

systemctl list-units的Description列

systemctl status sshd的第一行内容

Documentaion

提供文件查询帮助功能。格式:

  • Documentaion=http://www...
  • Documentaion=man:sshd(8)
  • Documentaion=file:/etc/ssh/sshd_config
After

 此处指定的unit必须在当前unit之 前 启动

Before此处指定的unit必须在当前unit之 后 启动
Requires此处指定的unit必须在当前unit之 前 启动,否则当前unit启动失败
Wants此处指定的unit必须在当前unit之 后 启动,不影响当前unit
Conflicts表示冲突的服务,此处指定的unit和当前unit只能有一个可以启动。

Service部分

Type

daemon的启动方式,影响ExecStart。

  • simple:默认值,此daemon主要由ExecStart接的命令启动,启动后常驻内存
  • forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出
  • oneshot:一次性进程,如文件系统检查与挂载
  • dbus:此daemon取得D-Bus名称后才会继续运行,通常也会设定BusName=xxx
  • idle:所有的工作都顺利执行完毕后才会执行此daemon
EnvironmentFile指定启动脚本的环境配置文件
ExecStart实际启动此daemon的命令或脚本程序
ExecStartPre执行ExecStart前执行的命令
ExecStartPost执行ExecStart后执行的命令
ExecStop实际停止服务的命令,与systemctl stop 有关
ExecReload实际重启服务的命令,与systemctl reload 有关
Restart

定义自动重启当前服务的情形。如

  • always        总是
  • on-success     成功时
  • on-failure      失败时
  • on-abnormal     异常时
  • on-abort     中止时
  • on-watchdog     描述在看门狗计时器(一种监控系统运行的机制)触发时触发的动作或事件。这可能涉及到系统的重启、故障恢复或其他类型的自动纠正措施
RemainAfterExit当此值为1时,此daemon所属的所有程序都终止后,会再次尝试启动
TimeoutSec此服务未能正常启动或正常终止时,等待多久强制结束
KillMode
  • process        当daemon停止时,只终止主要程序(ExecStart后的指令)
  • control-group     当前控制组里面的所有子进程,都会被杀掉
  • none     没有进程会被杀掉,只是执行服务的stop命令
RestartSec此服务被关闭需要重新启动时,间隔多久,预设100ms

Install部分

WantedBy后面大部分接 .target unit,此unit归属哪个target unit,大多数服务性质的unit都在 multi-user.target
Also当前unit本身被enable时,此处接的unit也enable
Alias进行一次软链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/112477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电源模块测试用例科普:如何调整电压调整率?ATECLOUD-POWER测试系统能否测试?

电压调整率可以控制电压水平,确保设备正常工作,并且可以减少电能浪费,是开关电源测试的其中一个测试项目。那么要如何测试电压调整率呢?测试条件是什么呢? 什么是电压调整率? 电压调整率是指变压器某个绕组的空载电压和指定负载和功率因数…

软考系列(系统架构师)- 2019年系统架构师软考案例分析考点

试题一 软件架构(架构风格、质量属性) 【问题1】(13分) 针对用户级别与折扣规则管理功能的架构设计问题,李工建议采用面向对象的架构风格,而王工则建议采用基于规则的架构风格。请指出该系统更适合采用哪种…

三网话费余额查询的API系统 基于thinkphp6.0框架

本套系统是用thinkphp6.0框架开发的,PHP需大于8.2,系统支持用户中心在线查询和通过API接口对接发起查询,用户余额充值是对接usdt接口,源码全开源,支持懂技术的人二次开发~搭建教程1、源码上传后,吧运行目录…

【TES600】青翼科技基于XC7K325T与TMS320C6678的通用信号处理平台

板卡概述 TES600是一款基于FPGA+DSP协同处理架构的通用高性能实时信号处理平台,该平台采用1片TI的KeyStone系列多核浮点/定点DSP TMS320C6678作为主处理单元,采用1片Xilinx的Kintex-7系列FPGA XC7K325T作为协处理单元,具有1个FMC…

斜率优化dp

f i min ⁡ ( a j − j i ) f_i\min(a_j - j \times i) fi​min(aj​−ji) 考虑变成点对 ( j , a j ) (j,a_j) (j,aj​),则 f i Y j − X j i f_iY_j-X_ji fi​Yj​−Xj​i 令 i k , f i b ik, f_ib ik,fi​b,得 b Y j − X j k bY_j-X_jk b…

甄知科技张礼军:数智化转型助企业破茧成蝶!

数智化浪潮滚滚向前,正席卷各行各业,带领企业从数字化时代跨入数智化时代。可什么是数智化?如何实现数智化转型?已经成为横亘在无数企业面前的大难题! 事实上,数智化是数字化、AI和业务三个要素的交集&…

4.9 多协议标记交换MPLS

思维导图: 前言: **4.9 多协议标记交换MPLS笔记** 1. **定义与背景**: - MPLS (多协议标记交换) 是一种由 IETF 开发的新协议。 - “多协议”意味着 MPLS 的上层可以使用多种协议。 - 该协议综合了多家公司的技术,如 C…

【MySQL系列】- Select查询SQL执行过程详解

【MySQL系列】- Select查询SQL执行过程详解 文章目录 【MySQL系列】- Select查询SQL执行过程详解一、SQL查询语句的执行过程二、SQL执行过程详解2.1. 连接器2.2. 查询缓存2.3. 分析器2.4. 优化器2.5. 执行器 三、undo log 和 redo log作⽤3.1. redo log (重做日志&a…

基于Linux的驱动开发:内核模块传参、内核到处符号表、字符设备驱动

内核模块传参 内核模块: int a , b; 安装内核模块时:insmod demo.ko a 100 b 10; 1.内核模块传参的意义 在安装内核模块时给内核模块中的变量进行数值传递,这样可以让我们的内核模块向上兼容更为复杂的应用程序,向下适配多种硬件…

2022年亚太杯APMCM数学建模大赛C题全球变暖与否全过程文档及程序

2022年亚太杯APMCM数学建模大赛 C题 全球变暖与否 原题再现: 加拿大的49.6C创造了地球北纬50以上地区的气温新纪录,一周内数百人死于高温;美国加利福尼亚州死亡谷是54.4C,这是有史以来地球上记录的最高温度;科威特53…

JVM内存模型概述

这里主要分为五大块,分别是:本地方法栈、方法区、java堆、程序计数器和java栈。其中重点是方法区、java堆和java栈。 下面就把各个区域的性质总结一下:(说明,下面的只是结论,没有详细的对各个内存块进行详细…

运维监控Zabbix部署

目录 运维监控Zabbix部署 1. 简介 2. 安装 ​编辑 2.1 安装前准备 - Mysql 2.2 安装Zabbix Server 和 Zabbix Agent 2.2.1 安装Zabbix yum库 2.2.2 安装Zabbix Server、前端、Agent 2.2.3 初始化Mysql数据库 2.2.4 为Zabbix Server配置数据库 2.2.5 配置Zab…

AI驱动的未来:探索人工智能的无限潜力 | 开源专题 No.39

这一系列开源项目代表着多个领域的最新技术成果,包括深度学习、自然语言处理、计算机视觉和分布式训练。它们共同的特点是致力于教育、资源分享、开源精神、多领域应用以及性能和效率的追求,为广大开发者、研究者和学生提供了宝贵的工具和知识&#xff0…

AI全栈大模型工程师(九)Function Calling 的机制

文章目录 Function Calling 的机制Function Calling 示例 1:加法计算器Function Calling 实例 2:四则混合运算计算器后记Function Calling 的机制 Function Calling 示例 1:加法计算器 需求:用户输入任意可以用加法解决的问题,都能得到计算结果。 # 加载环境变量import o…

elasticsearch的docker安装与使用

安装 docker network create elasticdocker pull docker.elastic.co/elasticsearch/elasticsearch:8.10.4# 增加虚拟内存, 此处适用于linux vim /etc/sysctl.conf # 添加 vm.max_map_count262144 # 重新启动 sysctl vm.max_map_countdocker run --name es01 --net …

【MATLAB第80期】基于MATLAB的结构核岭回归SKRR多输入单输出回归预测及分类预测模型

【MATLAB第80期】基于MATLAB的结构核岭回归SKRR多输入单输出回归预测及分类预测模型 SKRR这是Gustau Camps-Valls等人在“用深度结构核回归检索物理参数”中提出的结构核岭回归(SKRR)方法。 参考文献: Camps-Valls,Retrieval of Physical Pa…

AM@两种余项型泰勒公式的对比和总结@常用函数的麦克劳林公式

文章目录 abstract两种余项型泰勒公式的对比和总结Maclaurin公式常用函数的Maclaurin公式推导例求极限按幂展开 abstract 泰勒公式的两种余项型(Penao&Lagrange)泰勒公式的对比和总结常用的Maclaurin公式列举(Peano余项型为主) 两种余项型泰勒公式的对比和总结 Taylor公式…

FL Studio21最新中文破解进阶高级完整版安装下载教程

目前水果软件最版本是FL Studio21,它让你的计算机就像是全功能的录音室,大混音盘,非常先进的制作工具,让你的音乐突破想象力的限制。喜欢音乐制作的小伙伴千万不要错过这个功能强大,安装便捷的音乐软件哦!如…

[牛客]计算机网络习题笔记_1020

1、物理层:以太网 调制解调器 电力线通信(PLC) SONET/SDH G.709 光导纤维 同轴电缆 双绞线等。 2、数据链路层(网络接口层包括物理层和数据链路层):Wi-Fi(IEEE 802.11) WiMAX(IEEE 802.16) ATM DTM 令牌环 以太网 FDD…

《数据结构、算法与应用C++语言描述》使用C++语言实现链表队列

《数据结构、算法与应用C语言描述》使用C语言实现链表队列 定义 队列的定义 队列(queue)是一个线性表,其插入和删除操作分别在表的不同端进行。插入元素的那一端称为队尾(back或rear),删除元素的那一端称…