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

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

-
服务管理(
systemctl
,。.service
文件) -
伐木(
journald
) -
设备管理(
udev
) -
登录会议(
logind
) - 计时器(像克朗一样,但更强大)
-
安装和掉期(
.mount
,.swap
单位) -
网络配置(通过
networkd
) - 资源控制(使用CGroups)
关键创新是并行化:SystemD可以根据依赖关系同时启动服务,从而大大加快了引导时间。
它还介绍了单位的概念 - 定义服务,计时器,插座和坐骑等资源的文件。这些单元通过systemctl
统一管理。

核心概念:单位,目标和依赖项
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
systemctl
和journalctl
是您的日常驱动程序。
SystemCTL:像专业人士一样控制服务
常见命令:
-
start
,stop
,restart
,reload
-
enable
,disable
- 管理自动启动 status
- 检查当前状态is-active
,is-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
没有限制:与StartLimitIntervalSec
和StartLimitBurst
结合 - 失败后立即检查日志:
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中文网其他相关文章!

热AI工具

Undress AI Tool
免费脱衣服图片

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

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

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

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

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

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

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

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

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

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

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