2026/1/18 1:25:31
网站建设
项目流程
建站模板安装视频教程全集,想百度搜到网站新域名怎么做,铁岭市做网站,广东住房和城乡建设厅网站首页systemd 介绍系统启动管理进程CentOS 5 使用 Sys init 引导系统启动#xff0c;启动速度最慢#xff0c;采用串行方式启动#xff0c;无论进程相互之间有无依赖关系。CentOS 6 使用 Upstart init 引导系统启动#xff0c;启动速度快一点#xff0c;有依赖的进程之间依次启…systemd 介绍系统启动管理进程CentOS 5 使用 Sys init 引导系统启动启动速度最慢采用串行方式启动无论进程相互之间有无依赖关系。CentOS 6 使用 Upstart init 引导系统启动启动速度快一点有依赖的进程之间依次启动而其他与之没有依赖关系的则并行同步启动。CentOS 7 使用 Systemd 引导系统启动速度最快所有进程无论有无依赖关系则都是并行启动很多时候进程没有真正启动而是只有一个信号或者说是标记而已在真正利用的时候才会真正启动。Systemd为了解决上文的问题而诞生。它的目标是为系统的启动和管理提供一套完整的解决方案。基本概念服务从业务角度来称呼例如 web 服务数据库服务。守护进程daemonweb 服务器对外提供 web 服务由 web 相关的进程提供支持。例如# 安装软件包 [rootcentos7 ~]# yum install -y httpd # 启动服务 [rootcentos7 ~]# systemctl start httpd # 查看进程 [rootcentos7 ~]# ps axf|tail ...... 87094 ? Ss 0:00 /usr/sbin/httpd -DFOREGROUND 87096 ? S 0:00 \_ /usr/sbin/httpd -DFOREGROUND 87097 ? Sl 0:00 \_ /usr/sbin/httpd -DFOREGROUND 87098 ? Sl 0:00 \_ /usr/sbin/httpd -DFOREGROUND 87099 ? Sl 0:00 \_ /usr/sbin/httpd -DFOREGROUNDhttpd 服务对应的守护进程是87094、87096...systemd 架构unit 类型systemctl 命令用于管理不同类型的系统对象这些对象称之为units。Service unit用于定义系统服务文件扩展名为.service例如httpd.serviceSocket unit用于标识进程间通信用的 socket文件文件扩展名为.socketTarget unit用于模拟实现“运行级别”文件扩展名为.targetTimer unit用于管理计划任务文件扩展名为.timerDevice unit用于定义内核识别的设备文件扩展名为.deviceMount unit用于定义文件系统挂载点文件扩展名为.mountSnapshot unit管理系统快照文件扩展名为.snapshotSwap unit用于标识swap设备文件扩展名为.swapAutomount unit文件系统的自动挂载点文件扩展名为.automountPath unit用于根据文件系统上特定对象的变化来启动其他服务文件扩展名为.pathSlice unit用于资源管理文件扩展名为.slice查看 unit 列表信息# 列出状态为loaded units [rootcentos7 ~]# systemctl list-unitssystemctl list-units命令输出说明UNIT服务单元名称。LOADsystemd是否正确解析了单元的配置并将该单元加载到内存中。ACTIVE单元的高级别激活状态。此信息表明单元是否已成功启动。SUB单元的低级别激活状态。此信息指示有关该单元的更多详细信息。信息视单元类型、状态以及单元的执行方式而异。DESCRIPTION单元的简短描述。# -t选项查看特定类型unit 清单 [laomacentos7 ~]$ systemctl list-units -t timer UNIT LOAD ACTIVE SUB DESCRIPTION systemd-tmpfiles-clean.timer loaded active waiting Daily Cleanup of Temporary Directories unbound-anchor.timer loaded active waiting daily update of the root trust anchor for DNSSEC LOAD Reflects whether the unit definition was properly loaded. ACTIVE The high-level unit activation state, i.e. generalization of SUB. SUB The low-level unit activation state, values depend on unit type. 2 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use systemctl list-unit-files. # 列出类型为service状态为active和inactive unit [rootcentos7 ~]# systemctl list-units --type service --all # 列出所有unit包括未loaded的unit [rootcentos7 ~]# systemctl list-unit-files # 查看失败的服务 [rootcentos7 ~]# systemctl --failed --type service查看单个 unit 信息[laomacentos7 ~]$ systemctl status sshd.service ● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since 三 2022-11-09 08:45:45 CST; 5h 50min ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 1167 (sshd) Tasks: 1 CGroup: /system.slice/sshd.service └─1167 /usr/sbin/sshd -D关键字概述loaded单元配置文件已处理active(running)正在运行active(exited)已成功完成一次性配置active(waiting)运行中正在等待事件inactive不再运行enabled系统引导时启动disabled系统引导时不启动static无法启动依赖其他单元启动课后作业1. 解释systemd作用。2. 使用systemctl命令查看unit 清单信息。3. 使用systemctl命令查看特定 unit 信息。控制系统服务命令任务systemctl status UNIT查看单元状态的详细信息。systemctl stop UNIT在运行中的系统上停止一项服务。systemctl start UNIT在运行中的系统上启动一项服务。systemctl restart UNIT在运行中的系统上重新启动一项服务。systemctl reload UNIT重新加载运行中服务的配置文件。systemctl mask UNIT禁用服务使其无法手动启动或在系统引导时启动。systemctl unmask UNIT使屏蔽的服务变为可用。systemctl enable UNIT将服务配置为在系统引导时启动。使用 --now 选项也会启动该服务。systemctl disable UNIT禁止服务在系统引导时启动。使用 --now 选项也会停止该服务。# 停止服务 [rootcentos7 ~]# systemctl stop sshd.service # 客户端连接测试 [rootcentos7 ~]# ssh laomacentos7 hostname # 启动服务 [rootcentos7 ~]# systemctl start sshd.service # 客户端连接测试 [rootcentos7 ~]# ssh laomacentos7 hostname # 重启服务相当于stop再start [rootcentos7 ~]# systemctl restart sshd.service # 重新加载服务服务对应的主进程不会重启只会重新加载一次配置文件。 # 一般用于配置文件变动后重新加载 [rootcentos7 ~]# systemctl reload sshd.service # 禁止服务开机自启 [rootcentos7 ~]# systemctl disable sshd.service [rootcentos7 ~]# systemctl is-enabled sshd disabled # 设置服务开机自启 [rootcentos7 ~]# systemctl enable sshd.service [rootcentos7 ~]# systemctl is-enabled sshd enabled # 禁用服务服务被禁用后将无法start因为服务的配置文件指向/dev/null [rootcentos7 ~]# systemctl mask sshd.service # 取消禁用 [rootcentos7 ~]# systemctl unmask sshd.serviceunit 配置文件unit 配置文件存放在多个位置/etc /systemd/system/unit.service优先生效。一般是管理员自定义的配置。/usr/lib /systemd/system/unit.service其次生效。软件包自带的默认配置。配置文件说明示例单元文件 /usr/lib/systemd/system/sshd.service 说明# 标识该部分为 Unit 配置用于描述服务的基本信息、依赖关系等。 [Unit] # 服务的描述信息说明这是 OpenSSH 服务器守护进程便于管理员识别服务用 途。 DescriptionOpenSSH server daemon # 指定服务的文档路径这里指向 sshd 命令的手册页man 8 sshd和配置文件的手 册页man 5 sshd_config方便用户查阅帮助。 Documentationman:sshd(8) man:sshd_config(5) # 定义服务的启动顺序sshd 服务必须在 network.target网络服务就绪和 sshd-keygen.serviceSSH 密钥生成服务之后启动确保依赖的资源已准备好。 Afternetwork.target sshd-keygen.service # 表示 sshd 服务 希望 sshd-keygen.service 运行但不是强制依赖。如果 sshd-keygen.service 启动失败sshd 仍会尝试启动通常用于生成初始 SSH 密 钥若密钥已存在则不影响。 Wantssshd-keygen.service # 标识该部分为 Service 配置用于定义服务的启动方式、执行命令、重启策略等。 [Service] # 定义服务的类型为 notify表示服务启动后会主动通知 systemd 自己已就绪通过 sd_notify() 函数systemd 会等待这个通知后再继续后续流程确保服务真正可 用。 Typenotify # 指定环境变量文件的路径/etc/sysconfig/sshd 中通常定义 OPTIONS 等变量如 额外的 sshd 启动参数这些变量会被后续的 ExecStart 引用。 EnvironmentFile/etc/sysconfig/sshd # 服务启动时执行的命令 ExecStart/usr/sbin/sshd -D $OPTIONS # /usr/sbin/sshdsshd 守护进程的可执行文件路径。 # -D表示 sshd 以非守护进程模式运行前台运行因为 systemd 通常管理前台 进程便于监控。 # $OPTIONS引用 EnvironmentFile 中定义的额外参数如 -p 2222 指定端口。 # 服务重载配置时执行的命令 ExecReload/bin/kill -HUP $MAINPID # kill -HUP 发送 SIGHUP 信号给 sshd 主进程使其重新加载配置文件无需重启 服务。 # $MAINPID 是 systemd 自动维护的服务主进程 ID。 # 定义服务停止时的杀死模式process 表示只杀死服务的主进程sshd 主进程 其子进程如已建立的 SSH 连接会被保留避免强制中断现有连接。 KillModeprocess # 定义服务的重启策略当服务因非正常退出如崩溃、信号终止时systemd 会自 动重启服务正常退出如主动停止则不重启。 Restarton-failure # 服务重启前的等待时间这里设置为 42 秒避免频繁重启导致资源耗尽。 RestartSec42s # 标识该部分为 Install 配置用于定义服务如何被 启用即系统启动时自动运 行。 [Install] # 表示当系统启动到 multi-user.target多用户命令行模式非图形界面时该服 务会被自动启动。这是服务器的默认运行级别确保 SSH 服务在系统启动后可用。 WantedBymulti-user.target开发一个 study 服务1. 开发 studyd 服务主程序 study脚本说明这是一个无限循环的脚本每 5 秒会向 /var/log/study.log 文件中追加一行包含当前时间的日志内容为 [时间]: IM studying [ Linux ] 。[rootcentos7 ~ 16:15:19]# vim /usr/bin/study#!/bin/bash # 第一行内容是脚本的 解释器声明shebang指定该脚本使用 /bin/bash 作为解释器执行。系统会根据这一行找到对应的 shell 程序来解析后续命令。 # 启动一个无限循环while 是循环关键字true 是一个永远为真的条件因此 这个循环会一直执行下去直到被外部终止如 CtrlC。 while true # 循环体的开始标记do 和后面的 done 之间的内容是循环中重复执行的命令。 do # 执行 date 命令获取当前系统时间并通过 $(...) 捕获其输出将结果 赋值给变量 DATE。 DATE$(date) # echo 命令输出字符串其中 $DATE 会被替换为变量的值 # 是追加重定向符号将输出内容追加到 /var/log/study.log 文件中 # 最终输出内容类似 Fri Oct 31 10:00:00 CST 2025: IM studying [ Linux ]。 echo $DATE: IM studying [ Linux ] /var/log/study.log # 让脚本暂停执行 5 秒sleep 命令用于延迟单位默认为秒避免循环执 行过快。 sleep 5 # 循环体的结束标记与前面的 while 和 do 配合标志着一次循环的结束。 done[rootcentos7 ~ 16:24:17]# chmod x /usr/bin/study2. 创建 studyd 服务单元文件# 参考 sshd.service [rootcentos7 ~ 16:25:51]# cp /usr/lib/systemd/system/sshd.service \ /etc/systemd/system/studyd.service [rootcentos7 ~ 16:26:32]# vim /etc/systemd/system/studyd.service[Unit] Descriptionstudy server daemon [Service] ExecStart/usr/bin/study [Install] WantedBymulti-user.target# 通知 systemd 读取 unit 变化 [rootcentos7 ~ 16:26:36]# systemctl daemon-reload # 启用并启动服务 [rootcentos7 ~ 16:28:29]# systemctl enable studyd --now # 查看服务状态 [rootcentos7 ~ 16:28:34]# systemctl status studyd ● studyd.service - study server daemon Loaded: loaded (/etc/systemd/system/studyd.service; enabled; vendor preset: disabled) Active: active (running) since 五 2025-10-31 16:28:34 CST; 1s ago Main PID: 2786 (study) Tasks: 2 CGroup: /system.slice/studyd.service ├─2786 /bin/bash /usr/bin/study └─2788 sleep 5 10月 31 16:28:34 centos7.laoma.cloud systemd[1]: Started study server daemon.3. 验证日志[rootcentos7 ~ 16:28:36]# tail -f /var/log/study.log 2025年 10月 31日 星期五 16:28:29 CST: IM studying [ Linux ] 2025年 10月 31日 星期五 16:28:34 CST: IM studying [ Linux ] 2025年 10月 31日 星期五 16:28:39 CST: IM studying [ Linux ] 2025年 10月 31日 星期五 16:28:44 CST: IM studying [ Linux ] 2025年 10月 31日 星期五 16:28:49 CST: IM studying [ Linux ] 2025年 10月 31日 星期五 16:28:54 CST: IM studying [ Linux ] ......课后作业以 sshd 服务为例1. 如何启停服务2. 如何重启和重新加载服务这两者的区别是什么3. 如何启用和禁用服务开机自启4. 如何禁用服务和取消禁用服务5. 如何查看服务依赖和反依赖