目录
什么是SystemD及其重要的原因
核心概念:单位,目标和依赖项
服务单位:系统管理的核心
目标替换跑步
理解依赖性
掌握SystemCTL和JournalCtl
SystemCTL:像专业人士一样控制服务
JournalCtl:统一的伐木只是有效的
您应该知道的高级功能
计时器:Systemd更好的cron
插座激活:按需开始服务
使用CGroups的资源控制
最佳实践和常见的陷阱
最后的想法
首页 系统教程 操作系统 现代Linux系统系统D的深度指南

现代Linux系统系统D的深度指南

Aug 23, 2025 pm 12:02 PM
linux systemd

SystemD是现代Linux系统中的第一个过程(PID 1),替换了Sysvinit和Upstart等旧的Init系统,负责通过一系列集成工具套件来启动,管理服务,设备,日志和用户会话。 2。它使用单元文件(.service,.timer,.socket等)来定义和管理系统资源,从而使并行启动可用于更快的启动时间,并通过SystemCtl进行统一的控制。 3。关键组件包括用于服务管理的SystemCTL(启动,停止,启用,状态),用于结构化记录的JournalCTL,用于按单位,时间或优先级过滤,以及目标(例如,多用户,target)代替传统的运行级别。 4。使用诸如after =,quirtes = and with =之类的指令对依赖项进行管理,允许对启动顺序进行精确控制,可以使用SystemCtl list依赖性检查。 5。高级功能包括用于可靠的,记录的计划(替换CRON)的SystemD计时器,按需启动服务的套接字激活(例如,SSHD.Socket)和基于自动CGroup的自动资源限制(CPU,内存),以更好地隔离和控制。 6。最佳实践包括将供应商单位文件复制到/etc/systemd/system//在编辑之前,使用更改后使用SystemCtl Daemon-Reload,避免避免毫无限制的restart =始终无需限制速率,并通过SystemCtl Edit Live-Indride over-Indride。 7。通过创建/var/log/journal和重新启动日记帐来启用持续记录,以确保日志生存能够重新启动。 8。掌握SystemD提供了深层的系统可观察性和控制性,这对于开发人员,DevOps工程师和系统管理员来说至关重要,以便有效地管理,故障排除和优化现代的Linux环境。

现代Linux系统系统D的深度指南

SystemD是现代Linux系统的骨干,取代了Sysvinit和Upstart等较旧的初始化系统。这不仅是一个流程启动器,而且是一个功能齐全的系统和服务管理器,它可以控制Linux机靴,管理服务,处理设备,日志甚至用户会话的方式。如果您使用了systemctl start nginx或SEED journalctl输出之类的命令,则您已经与SystemD进行了交互。但是要真正掌握现代的Linux系统,您需要更深入地进行。

现代Linux系统系统D的深度指南

这是有效理解和使用SystemD的实用,深入的指南。


什么是SystemD及其重要的原因

SystemD是一个初始化系统,这是第一个开始,该过程始于Linux Boots(PID 1)。它负责初始化系统环境,安装文件系统,启动服务以及管理其生命周期。但是Systemd远远超出了这一点。它包括一套处理的工具和守护程序:

现代Linux系统系统D的深度指南
  • 服务管理systemctl ,。 .service文件)
  • 伐木journald
  • 设备管理udev
  • 登录会议logind
  • 计时器(像克朗一样,但更强大)
  • 安装和掉期.mount.swap单位)
  • 网络配置(通过networkd
  • 资源控制(使用CGroups)

关键创新是并行化:SystemD可以根据依赖关系同时启动服务,从而大大加快了引导时间。

它还介绍了单位的概念 - 定义服务,计时器,插座和坐骑等资源的文件。这些单元通过systemctl统一管理。

现代Linux系统系统D的深度指南

核心概念:单位,目标和依赖项

Systemd将所有内容组织为单位。每个单元是代表系统资源的配置文件。单元具有其文件扩展名指示的类型:

  • .service - 背景守护程序(例如, nginx.service
  • .socket - 插座激活的服务
  • .timer - 基于时间的工作计划
  • .mount - 文件系统安装
  • .swap - 交换分区
  • .target - 单元组(如跑步)
  • .path - 路径触发的动作

服务单位:系统管理的核心

典型的服务文件属于/etc/systemd/system/ or /usr/lib/systemd/system/ 。这是一个简化的例子:

 [单元]
描述=我的网络应用
after = network.target

[服务]
execstart =/usr/bin/python3/opt/myapp/app.py
重新启动=始终
用户= www-data
WorkingDirectory =/opt/myApp

[安装]
wantby =多用户.target

关键部分:

  • [Unit] - 元数据和依赖关系
  • [Service] - 如何运行该过程
  • [Install] - 如何在启动处启用它

使用systemctl来管理它:

 sudo systemctl启动myApp.Service
sudo systemctl启用myApp.Service#自动启动时启动
sudo systemctl状态myApp.Service

目标替换跑步

旧的Init系统使用跑步级(例如,多用户CLI的3,GUI为5)。 SystemD使用目标

  • multi-user.target .target≈Runlevel3
  • graphical.target
  • rescue.target单用户模式

在它们之间切换:

 sudo systemctl隔离多用户。

设置默认值:

 sudo systemctl set-default graphical.target

理解依赖性

SystemD使用依赖指令确定启动顺序:

  • After=Before=
  • Requires=Wants=
  • BindsTo=PartOf=

Wants=是弱的(如果依赖性失败,则不会失败); Requires=很强。

您可以检查依赖项:

 SystemCtl列表依赖性nginx.Service

掌握SystemCTL和JournalCtl

systemctljournalctl是您的日常驱动程序。

SystemCTL:像专业人士一样控制服务

常见命令:

  • startstoprestartreload
  • enabledisable - 管理自动启动
  • status - 检查当前状态
  • is-activeis-enabled脚本友好的检查
  • list-units --type=service --state=running - 请参阅运行服务

编辑单元文件后重新加载守护程序:

 sudo systemctl守护程序
sudo systemctl守护程序 - 重载

掩盖服务以防止其开始(甚至手动):

 sudo systemctl mask apache2.Service

稍后删除:

 sudo systemctl unmask apache2.Service

JournalCtl:统一的伐木只是有效的

SystemD通过journald登录,该日记已捕获服务,内核和早期启动的输出。它是结构化的,二进制的和索引的。

基本用法:

 journalctl -u nginx.Service#nginx的日志
Journalctl-“ 2小时前”
journalctl -f#遵循日志(例如尾巴-f)
JournalCtl -B#当前启动的日志
JournalCtl -B -1#先前的启动
journalctl _pid = 1234#按进程ID
JournalCtl -no-pager#避免寻呼机

严重性过滤:

 journalctl -p err -u mysql.service#唯一错误

列出所有可用字段:

 JournalCtl-场

日志存储在/var/log/journal/ (如果启用了持续记录)。启用它:

 sudo mkdir -p/var/log/journal
sudo systemctl restart systemd-journald

您应该知道的高级功能

计时器:Systemd更好的cron

systemd.timer替换Cron,以进行更可靠,灵活的调度。

示例:每30分钟运行一次脚本。

create /etc/systemd/system/myjob.service

 [服务]
type = oneshot
execstart =/usr/local/bin/backup.sh

create /etc/systemd/system/myjob.timer

 [计时器]
Oncalendar =*:0/30
持续= true

[安装]
wantby = timers.target

启用并开始:

 sudo systemctl启用myjob.timer
sudo systemctl启动myjob.timer

检查何时会开火:

 SystemCTL列表成员

对克朗的好处:

  • 原木去期刊
  • 可以唤醒悬挂系统( Persistent=true OnCalendar
  • 更好的依赖处理
  • 每服务环境控制

插座激活:按需开始服务

SystemD可以在连接撞击插座时可以启动它,而不是一直运行服务。

示例: sshd.socket在端口22上听。当连接到达时,Systemd启动sshd.service

启用它:

 sudo systemctl启用sshd.socket

这样可以节省资源并提高安全性。

使用CGroups的资源控制

SystemD自动为每个服务创建CGROUP。您可以限制资源:

 [服务]
memorymax = 512m
cpuquota = 50%#限制为一半CPU
LimitNofile = 1024

监视资源使用情况:

 Systemd-cgtop

列表cgroups:

 Systemd-CGLS

最佳实践和常见的陷阱

  • 编辑单元文件后始终重新加载systemctl daemon-reload
  • 不要在/usr/lib/中编辑供应商单位:复制到/etc/systemd/system/ and override
  • 使用systemctl edit myservice.service来创建倒入覆盖
  • 避免Restart=always没有限制:与StartLimitIntervalSecStartLimitBurst结合
  • 失败后立即检查日志journalctl -u myservice -n 50 --no-pager
  • 在单位文件中使用描述性名称和描述
  • 在启用自动启动之前,请手动测试单元

强大的服务配置的示例:

 [服务]
execstart =/usr/bin/myserver
重新启动=实用
RESTARTSEC = 5s
StartLimitIntervalsec = 60
Startlimitburst = 3

最后的想法

SystemD很复杂,但是一旦您了解了其基于单元的设计,依赖模型和工具,它就会成为强大的盟友。这不仅是启动服务,还涉及建立一个可预测,可观察和可维护的系统。

从更快的靴子到更好的记录和细粒控制,SystemD是现代Linux操作的基础。无论您是开发人员,DevOps工程师还是系统管理员,都会投入掌握SystemD每天付款的时间。

基本上,如果今天在Linux上运行,它可能正在与SystemD交谈。学习其语言,您将始终知道引擎盖下发生了什么。

以上是现代Linux系统系统D的深度指南的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Stock Market GPT

Stock Market GPT

人工智能驱动投资研究,做出更明智的决策

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

套娃系统教程:多系统怎么玩?Ubuntu安装实战 套娃系统教程:多系统怎么玩?Ubuntu安装实战 Sep 02, 2025 pm 05:09 PM

昨天已经介绍了VMwareWorkstationPro的安装方法,但由于录制时间的限制未能及时发布,今天为大家带来更新!!!欢迎喜欢尝试新事物的朋友们来安装下面的Ubuntu系统。Ubuntu同样是一款非常优秀的操作系统,尽管不像Windows那样直观易用,例如许多应用需要通过命令行来下载,这对新手来说可能有一定的难度,不过大家可以尝试体验一下。以下为大家推荐几个下载系统镜像的网站:Windows操作系统镜像及工具和资源:https://msdn.itellyou.cn/Linux操作系统官方网

如何清理Linux系统 如何清理Linux系统 Aug 22, 2025 am 07:42 AM

Removeunusedpackagesanddependencieswithsudoaptautoremove,cleanpackagecacheusingsudoaptcleanorautoclean,andremoveoldkernelsviasudoaptautoremove--purge.2.Clearsystemlogswithsudojournalctl--vacuum-time=7d,deletearchivedlogsin/var/log,andempty/tmpand/var

现代Linux系统系统D的深度指南 现代Linux系统系统D的深度指南 Aug 23, 2025 pm 12:02 PM

Systemdisthefirstprocess(PID1)inmodernLinuxsystems,replacingolderinitsystemslikeSysVinitandUpstart,responsibleforbooting,managingservices,devices,logs,andusersessionsthroughasuiteofintegratedtools.2.Itusesunitfiles(.service,.timer,.socket,etc.)todefi

是基于Linux的Mac OS 是基于Linux的Mac OS Sep 01, 2025 am 03:52 AM

不,麦片中的notbasedonlinux; itisbuiltonunix,特别是theunix-likedarwinoperatingsystemdemendStemderivedFrombsDandNextstep.1)macosiscertifiedunix-compliantsiancesionsionsionsionsion10.5andusesthedarwincorewincorewincorewincorewincorewincorewiththththexnukernel,whecombinemach,whecombinesmach,bsosneent,bsostofon,bsostofon,bsopon

如何在Linux中实时进程 Linux FIFO调度策略 如何在Linux中实时进程 Linux FIFO调度策略 Sep 03, 2025 pm 12:39 PM

要让Linux进程以实时FIFO调度运行,需使用chrt命令或sched_setscheduler系统调用设置调度策略与优先级,如sudochrt-f99./app或在C程序中配置SCHED_FIFO及优先级参数,同时确保进程具有CAP_SYS_NICE能力或root权限,并通过limits.conf配置rtprio和memlock限制以保障实时性,避免优先级反转需使用支持优先级继承的互斥锁。

Linux如何安装deb格式软件包 Linux如何安装deb格式软件包 Sep 03, 2025 pm 12:36 PM

安装.deb包常用方法包括:使用dpkg命令安装并用apt修复依赖;2.推荐使用aptinstall./package_name.deb自动处理依赖;3.图形化方式可双击文件通过软件中心安装;4.安装后可用dpkg-l或dpkg-s检查软件包状态。

如何在Linux系统上管理用户和组 如何在Linux系统上管理用户和组 Sep 05, 2025 am 08:01 AM

创建用户用adduser或useradd,2.修改用户用usermod,3.删除用户用deluser或userdel,4.创建组用groupadd,5.添加用户到组用usermod-aG,6.从组中移除用户用gpasswd-d,7.删除组用groupdel,8.查看信息用whoami、groups、getent等命令,9.遵循最佳实践如避免直接使用root、定期清理账户、设置密码策略并合理分配组权限,通过掌握这些核心命令并根据发行版选择合适工具,可有效实现Linux用户和组的管理。

Linux如何检查CPU使用情况 Linux如何检查CPU使用情况 Aug 22, 2025 pm 04:39 PM

Usetopforareal-timeoverviewofCPUusageandprocesses,whereCPUstatslikeuser,system,andidleareshownatthetopandcanbesortedbyCPUwithShift P;2.Usehtopforamoreuser-friendly,color-coded,andscrollableinterface,installableviasudoaptinstallhtoporsudodnfinstallhto

See all articles