控制組可以按照應(yīng)用管理資源,而不是按照組成應(yīng)用的單個(gè)進(jìn)程。
作為一個(gè)系統(tǒng)管理員,沒(méi)有事情比意外地耗盡計(jì)算資源讓我更覺(jué)得沮喪。我曾不止一次填滿(mǎn)了一個(gè)分區(qū)的所有可用磁盤(pán)空間、耗盡內(nèi)存、以及沒(méi)有足夠的 CPU 時(shí)間在合理的時(shí)間內(nèi)處理我的任務(wù)。資源管理是系統(tǒng)管理員最重要的工作之一。
資源管理的關(guān)鍵是保證所有的進(jìn)程能夠相對(duì)公平的訪(fǎng)問(wèn)需要的系統(tǒng)資源。資源管理還包括確保在需要時(shí)添加內(nèi)存、硬盤(pán)驅(qū)動(dòng)器空間、還有 CPU 處理能力;或者在無(wú)法添加時(shí)限制資源的使用。此外,應(yīng)該阻止獨(dú)占系統(tǒng)資源的用戶(hù),無(wú)論其是否有意。
系統(tǒng)管理員可以通過(guò)一些工具監(jiān)控和管理不同的系統(tǒng)資源。例如,top 和類(lèi)似的工具允許你監(jiān)控內(nèi)存、I/O、存儲(chǔ)(磁盤(pán)、SSD 等)、網(wǎng)絡(luò)、交換空間、CPU 的用量等。這些工具,尤其是那些以 CPU 為中心的工具,大部分基于以運(yùn)行的進(jìn)程為基本單位進(jìn)行控制的模型。它們最多只是提供了一種方式來(lái)調(diào)整 nice
數(shù)字,從而修改優(yōu)先級(jí),或者殺死一個(gè)運(yùn)行的進(jìn)程。(要了解 nice
數(shù)字的信息,查看 使用 Glances 監(jiān)控 Linux 和 Windows 主機(jī))。
SystemV 環(huán)境中基于傳統(tǒng)的資源管理的其他工具,由 /etc/security/limits.conf
文件和 /etc/security/limits.d
中的本地配置文件控制。資源可以按照用戶(hù)或組以一種相對(duì)粗糙但實(shí)用的方式限制。可以管理的資源包括內(nèi)存的各個(gè)方面、每日的總 CPU 時(shí)間、數(shù)據(jù)總量、優(yōu)先級(jí)、nice
數(shù)字、并發(fā)登錄的數(shù)量、進(jìn)程數(shù)、文件大小的最大值等。
使用控制組管理進(jìn)程
systemd 和 SystemV 之間的一個(gè)主要差異是管理進(jìn)程的方式。SystemV 將每個(gè)進(jìn)程視作一個(gè)獨(dú)立的實(shí)體。systemd 將相關(guān)的進(jìn)程集中到一個(gè)控制組,簡(jiǎn)寫(xiě)做 cgroup,并將控制組作為一個(gè)整體管理系統(tǒng)資源。這意味著資源能夠基于應(yīng)用管理,而不是由組成應(yīng)用的各個(gè)進(jìn)程來(lái)管理。
控制組的控制單元稱(chēng)作切片單元。切片是允許 systemd 以樹(shù)狀格式控制程序次序,從而簡(jiǎn)化管理的概念化。
查看控制組
我將從一些允許你查看不同類(lèi)型控制組信息的命令開(kāi)始。 systemctl status <service>
命令顯示一個(gè)特定服務(wù)的切片信息,包括服務(wù)的切片。這個(gè)例子展示了 at
守護(hù)進(jìn)程:
-
[root@testvm1 ~]# systemctl status atd.service
-
● atd.service - Deferred execution scheduler
-
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
-
Active: active (running) since Wed 2020-09-23 12:18:24 EDT; 1 day 3h ago
-
Docs: man:atd(8)
-
Main PID: 1010 (atd)
-
Tasks: 1 (limit: 14760)
-
Memory: 440.0K
-
CPU: 5ms
-
CGroup: /system.slice/atd.service
-
└─1010 /usr/sbin/atd -f
-
Sep 23 12:18:24 testvm1.both.org systemd[1]: Started Deferred execution scheduler.
-
[root@testvm1 ~]#
這是一個(gè)我感到 systemd 比 SystemV 和舊的初始化程序更好用的原因的絕佳示例。這里的信息遠(yuǎn)比 SystemV 能夠提供的豐富。CGroup
項(xiàng)包括的層級(jí)結(jié)構(gòu)中,system.slice
是 systemd(PID 1),atd.service
在下一層,是 system.slice
的一部分。CGroup
項(xiàng)的第二行還顯示了進(jìn)程 ID(PID)和啟動(dòng)守護(hù)進(jìn)程使用的命令。
systemctl
命令可以列出多個(gè)控制組項(xiàng),--all
參數(shù)列出所有的切片,包括當(dāng)前沒(méi)有激活的切片:
-
[root@testvm1 ~]# systemctl -t slice --all
-
UNIT LOAD ACTIVE SUB DESCRIPTION
-
-.slice loaded active active Root Slice
-
system-getty.slice loaded active active system-getty.slice
-
system-lvm2\x2dpvscan.slice loaded active active system-lvm2\x2dpvscan.slice
-
system-modprobe.slice loaded active active system-modprobe.slice
-
system-sshd\x2dkeygen.slice loaded active active system-sshd\x2dkeygen.slice
-
system-systemd\x2dcoredump.slice loaded inactive dead system-systemd\x2dcoredump.slice
-
system-systemd\x2dfsck.slice loaded active active system-systemd\x2dfsck.slice
-
system.slice loaded active active System Slice
-
user-0.slice loaded active active User Slice of UID 0
-
user-1000.slice loaded active active User Slice of UID 1000
-
user.slice loaded active active User and Session Slice
-
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.
-
11 loaded units listed.
-
To show all installed unit files use 'systemctl list-unit-files'.
-
[root@testvm1 ~]#
關(guān)于這個(gè)數(shù)據(jù),第一個(gè)需要注意的是數(shù)據(jù)顯示了 UID 0(root)和 UID 1000 的用戶(hù)切片,UID 1000 是我登錄的用戶(hù)。這里列出了組成每個(gè)切片的切片部分,而不是服務(wù)。還說(shuō)明了每個(gè)用戶(hù)登錄時(shí)都會(huì)為其創(chuàng)建一個(gè)切片,這為將一個(gè)用戶(hù)的所有任務(wù)作為單個(gè)控制組項(xiàng)進(jìn)行管理提供了一種方式。
探索控制組的層次結(jié)構(gòu)
目前為止一切順利,但是控制組是分層的,所有的服務(wù)單元作為其中一個(gè)控制組的成員運(yùn)行。要查看這個(gè)層次結(jié)構(gòu)很簡(jiǎn)單,使用一個(gè)舊命令和 systemd 的一個(gè)新命令即可。
ps
命令可以用于映射進(jìn)程的和其所處的控制組層次。注意使用 ps
命令時(shí)需要指明想要的數(shù)據(jù)列。我大幅削減了下面命令的輸出數(shù)量,但是試圖保留足夠的數(shù)據(jù),以便你能夠?qū)ψ约合到y(tǒng)上的輸出有所感受:
-
[root@testvm1 ~]# ps xawf -eo pid,user,cgroup,args
-
PID USER CGROUP COMMAND
-
2 root - [kthreadd]
-
3 root - \_ [rcu_gp]
-
4 root - \_ [rcu_par_gp]
-
6 root - \_ [kworker/0:0H-kblockd]
-
9 root - \_ [mm_percpu_wq]
-
10 root - \_ [ksoftirqd/0]
-
11 root - \_ [rcu_sched]
-
12 root - \_ [migration/0]
-
13 root - \_ [cpuhp/0]
-
14 root - \_ [cpuhp/1]
-
<刪節(jié)>
-
625406 root - \_ [kworker/3:0-ata_sff]
-
625409 root - \_ [kworker/u8:0-events_unbound]
-
1 root 0::/init.scope /usr/lib/systemd/systemd --switched-root --system --deserialize 30
-
588 root 0::/system.slice/systemd-jo /usr/lib/systemd/systemd-journald
-
599 root 0::/system.slice/systemd-ud /usr/lib/systemd/systemd-udevd
-
741 root 0::/system.slice/auditd.ser /sbin/auditd
-
743 root 0::/system.slice/auditd.ser \_ /usr/sbin/sedispatch
-
764 root 0::/system.slice/ModemManag /usr/sbin/ModemManager
-
765 root 0::/system.slice/NetworkMan /usr/sbin/NetworkManager --no-daemon
-
767 root 0::/system.slice/irqbalance /usr/sbin/irqbalance --foreground
-
779 root 0::/system.slice/mcelog.ser /usr/sbin/mcelog --ignorenodev --daemon --foreground
-
781 root 0::/system.slice/rngd.servi /sbin/rngd -f
-
782 root 0::/system.slice/rsyslog.se /usr/sbin/rsyslogd -n
-
<刪節(jié)>
-
893 root 0::/system.slice/sshd.servi sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
-
1130 root 0::/user.slice/user-0.slice \_ sshd: root [priv]
-
1147 root 0::/user.slice/user-0.slice | \_ sshd: root@pts/0
-
1148 root 0::/user.slice/user-0.slice | \_ -bash
-
1321 root 0::/user.slice/user-0.slice | \_ screen
-
1322 root 0::/user.slice/user-0.slice | \_ SCREEN
-
1323 root 0::/user.slice/user-0.slice | \_ /bin/bash
-
498801 root 0::/user.slice/user-0.slice | | \_ man systemd.resource-control
-
498813 root 0::/user.slice/user-0.slice | | \_ less
-
1351 root 0::/user.slice/user-0.slice | \_ /bin/bash
-
123293 root 0::/user.slice/user-0.slice | | \_ man systemd.slice
-
123305 root 0::/user.slice/user-0.slice | | \_ less
-
1380 root 0::/user.slice/user-0.slice | \_ /bin/bash
-
625412 root 0::/user.slice/user-0.slice | | \_ ps xawf -eo pid,user,cgroup,args
-
625413 root 0::/user.slice/user-0.slice | | \_ less
-
246795 root 0::/user.slice/user-0.slice | \_ /bin/bash
-
625338 root 0::/user.slice/user-0.slice | \_ /usr/bin/mc -P /var/tmp/mc-root/mc.pwd.246795
-
625340 root 0::/user.slice/user-0.slice | \_ bash -rcfile .bashrc
-
1218 root 0::/user.slice/user-1000.sl \_ sshd: dboth [priv]
-
1233 dboth 0::/user.slice/user-1000.sl \_ sshd: dboth@pts/1
-
1235 dboth 0::/user.slice/user-1000.sl \_ -bash
-
<刪節(jié)>
-
1010 root 0::/system.slice/atd.servic /usr/sbin/atd -f
-
1011 root 0::/system.slice/crond.serv /usr/sbin/crond -n
-
1098 root 0::/system.slice/lxdm.servi /usr/sbin/lxdm-binary
-
1106 root 0::/system.slice/lxdm.servi \_ /usr/libexec/Xorg -background none :0 vt01 -nolisten tcp -novtswitch -auth /var/run/lxdm/lxdm-:0.auth
-
370621 root 0::/user.slice/user-1000.sl \_ /usr/libexec/lxdm-session
-
370631 dboth 0::/user.slice/user-1000.sl \_ xfce4-session
-
370841 dboth 0::/user.slice/user-1000.sl \_ /usr/bin/ssh-agent /bin/sh -c exec -l bash -c "/usr/bin/startxfce4"
-
370911 dboth 0::/user.slice/user-1000.sl \_ xfwm4 --display :0.0 --sm-client-id 2dead44ab-0b4d-4101-bca4-e6771f4a8ac2
-
370930 dboth 0::/user.slice/user-1000.sl \_ xfce4-panel --display :0.0 --sm-client-id 2ce38b8ef-86fd-4189-ace5-deec1d0e0952
-
370942 dboth 0::/user.slice/user-1000.sl | \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libsystray.so 6 23068680 systr
-
ay Notification Area Area where notification icons appear
-
370943 dboth 0::/user.slice/user-1000.sl | \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libpulseaudio-plugin.so 8 2306
-
8681 pulseaudio PulseAudio Plugin Adjust the audio volume of the PulseAudio sound system
-
370944 dboth 0::/user.slice/user-1000.sl | \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libxfce4powermanager.so 9 2306
-
8682 power-manager-plugin Power Manager Plugin Display the battery levels of your devices and control the brightness of your display
-
370945 dboth 0::/user.slice/user-1000.sl | \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libnotification-plugin.so 10 2
-
3068683 notification-plugin Notification Plugin Notification plugin for the Xfce panel
-
370948 dboth 0::/user.slice/user-1000.sl | \_ /usr/lib64/xfce4/panel/wrapper-2.0 /usr/lib64/xfce4/panel/plugins/libactions.so 14 23068684 acti
-
ons Action Buttons Log out, lock or other system actions
-
370934 dboth 0::/user.slice/user-1000.sl \_ Thunar --sm-client-id 2cfc809d8-4e1d-497a-a5c5-6e4fa509c3fb --daemon
-
370939 dboth 0::/user.slice/user-1000.sl \_ xfdesktop --display :0.0 --sm-client-id 299be0608-4dca-4055-b4d6-55ec6e73a324
-
370962 dboth 0::/user.slice/user-1000.sl \_ nm-applet
-
<刪節(jié)>
你可以使用 systemd-cgls
命令查看整個(gè)層次結(jié)構(gòu),這個(gè)命令不需要任何的復(fù)雜參數(shù),更加簡(jiǎn)單。
我也大幅縮短了這個(gè)樹(shù)狀結(jié)構(gòu),但是保留了足夠多的輸出,以便你能夠了解在自己的系統(tǒng)上執(zhí)行這個(gè)命令時(shí)應(yīng)該看到的數(shù)據(jù)總量和條目類(lèi)型。我在我的一個(gè)虛擬機(jī)上執(zhí)行了這個(gè)命令,輸出大概有 200 行;我的主要工作站的輸出大概有 250 行。
-
[root@testvm1 ~]# systemd-cgls
-
Control group /:
-
-.slice
-
├─user.slice
-
│ ├─user-0.slice
-
│ │ ├─session-1.scope
-
│ │ │ ├─ 1130 sshd: root [priv]
-
│ │ │ ├─ 1147 sshd: root@pts/0
-
│ │ │ ├─ 1148 -bash
-
│ │ │ ├─ 1321 screen
-
│ │ │ ├─ 1322 SCREEN
-
│ │ │ ├─ 1323 /bin/bash
-
│ │ │ ├─ 1351 /bin/bash
-
│ │ │ ├─ 1380 /bin/bash
-
│ │ │ ├─123293 man systemd.slice
-
│ │ │ ├─123305 less
-
│ │ │ ├─246795 /bin/bash
-
│ │ │ ├─371371 man systemd-cgls
-
│ │ │ ├─371383 less
-
│ │ │ ├─371469 systemd-cgls
-
│ │ │ └─371470 less
-
│ │ └─user@0.service …
-
│ │ ├─dbus-broker.service
-
│ │ │ ├─1170 /usr/bin/dbus-broker-launch --scope user
-
│ │ │ └─1171 dbus-broker --log 4 --controller 12 --machine-id 3bccd1140fca488187f8a1439c832f07 --max-bytes 100000000000000 --max-fds 25000000000000 --max->
-
│ │ ├─gvfs-daemon.service
-
│ │ │ └─1173 /usr/libexec/gvfsd
-
│ │ └─init.scope
-
│ │ ├─1137 /usr/lib/systemd/systemd --user
-
│ │ └─1138 (sd-pam)
-
│ └─user-1000.slice
-
│ ├─user@1000.service …
-
│ │ ├─dbus\x2d:1.2\x2dorg.xfce.Xfconf.slice
-
│ │ │ └─dbus-:1.2-org.xfce.Xfconf@0.service
-
│ │ │ └─370748 /usr/lib64/xfce4/xfconf/xfconfd
-
│ │ ├─dbus\x2d:1.2\x2dca.desrt.dconf.slice
-
│ │ │ └─dbus-:1.2-ca.desrt.dconf@0.service
-
│ │ │ └─371262 /usr/libexec/dconf-service
-
│ │ ├─dbus-broker.service
-
│ │ │ ├─1260 /usr/bin/dbus-broker-launch --scope user
-
│ │ │ └─1261 dbus-broker --log 4 --controller 11 --machine-id
-
<刪節(jié)>
-
│ │ └─gvfs-mtp-volume-monitor.service
-
│ │ └─370987 /usr/libexec/gvfs-mtp-volume-monitor
-
│ ├─session-3.scope
-
│ │ ├─1218 sshd: dboth [priv]
-
│ │ ├─1233 sshd: dboth@pts/1
-
│ │ └─1235 -bash
-
│ └─session-7.scope
-
│ ├─370621 /usr/libexec/lxdm-session
-
│ ├─370631 xfce4-session
-
│ ├─370805 /usr/bin/VBoxClient --clipboard
-
│ ├─370806 /usr/bin/VBoxClient --clipboard
-
│ ├─370817 /usr/bin/VBoxClient --seamless
-
│ ├─370818 /usr/bin/VBoxClient --seamless
-
│ ├─370824 /usr/bin/VBoxClient --draganddrop
-
│ ├─370825 /usr/bin/VBoxClient --draganddrop
-
│ ├─370841 /usr/bin/ssh-agent /bin/sh -c exec -l bash -c "/usr/bin/startxfce4"
-
│ ├─370910 /bin/gpg-agent --sh --daemon --write-env-file /home/dboth/.cache/gpg-agent-info
-
│ ├─370911 xfwm4 --display :0.0 --sm-client-id 2dead44ab-0b4d-4101-bca4-e6771f4a8ac2
-
│ ├─370923 xfsettingsd --display :0.0 --sm-client-id 261b4a437-3029-461c-9551-68c2c42f4fef
-
│ ├─370930 xfce4-panel --display :0.0 --sm-client-id 2ce38b8ef-86fd-4189-ace5-deec1d0e0952
-
│ ├─370934 Thunar --sm-client-id 2cfc809d8-4e1d-497a-a5c5-6e4fa509c3fb --daemon
-
│ ├─370939 xfdesktop --display :0.0 --sm-client-id 299be0608-4dca-4055-b4d6-55ec6e73a324
-
<刪節(jié)>
-
└─system.slice
-
├─rngd.service
-
│ └─1650 /sbin/rngd -f
-
├─irqbalance.service
-
│ └─1631 /usr/sbin/irqbalance --foreground
-
├─fprintd.service
-
│ └─303383 /usr/libexec/fprintd
-
├─systemd-udevd.service
-
│ └─956 /usr/lib/systemd/systemd-udevd
-
<刪節(jié)>
-
├─systemd-journald.service
-
│ └─588 /usr/lib/systemd/systemd-journald
-
├─atd.service
-
│ └─1010 /usr/sbin/atd -f
-
├─system-dbus\x2d:1.10\x2dorg.freedesktop.problems.slice
-
│ └─dbus-:1.10-org.freedesktop.problems@0.service
-
│ └─371197 /usr/sbin/abrt-dbus -t133
-
├─sshd.service
-
│ └─893 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
-
├─vboxservice.service
-
│ └─802 /usr/sbin/VBoxService -f
-
├─crond.service
-
│ └─1011 /usr/sbin/crond -n
-
├─NetworkManager.service
-
│ └─765 /usr/sbin/NetworkManager --no-daemon
-
├─switcheroo-control.service
-
│ └─787 /usr/libexec/switcheroo-control
-
<刪節(jié)>
這個(gè)樹(shù)狀視圖顯示了所有的用戶(hù)和系統(tǒng)切片,以及每個(gè)控制組內(nèi)正在運(yùn)行的服務(wù)和程序。注意叫作 scope
(范圍)的單元,它將相關(guān)的程序組成一個(gè)管理單元,在上面列出的結(jié)果中就是 user-1000.slice
。user-1000.slice/session-7.scope
控制組包含了 GUI 桌面程序?qū)哟谓Y(jié)構(gòu),以 LXDM 顯示管理器會(huì)話(huà)和其所有的子任務(wù)開(kāi)始,包括像 Bash 命令行解釋器和 Thunar GUI 文件管理器之類(lèi)的程序。
配置文件中不定義范圍單元,而是作為啟動(dòng)相關(guān)程序組的結(jié)果程序化生成的。范圍單元不創(chuàng)建或啟動(dòng)作為控制組的組成部分運(yùn)行的進(jìn)程。范圍內(nèi)的所有進(jìn)程都是平等的,沒(méi)有內(nèi)部的層次結(jié)構(gòu)。一個(gè)范圍的生命周期在第一個(gè)進(jìn)程創(chuàng)建時(shí)開(kāi)始,在最后一個(gè)進(jìn)程銷(xiāo)毀時(shí)結(jié)束。
在你的桌面打開(kāi)多個(gè)窗口,比如終端模擬器、LibreOffice、或者任何你想打開(kāi)的,然后切換到一個(gè)可用的虛擬控制臺(tái),啟動(dòng)類(lèi)似 top
或 Midnight Commander 的程序。在主機(jī)運(yùn)行 systemd-cgls
命令,留意整體的層次結(jié)構(gòu)和范圍單元。
systemd-cgls
命令提供的控制組層次結(jié)構(gòu)表示(以及組成控制組單元的細(xì)節(jié)),比我見(jiàn)過(guò)的其他任何指令都要完整。和 ps
命令提供的輸出相比,我喜歡 systemd-cgls
命令更簡(jiǎn)潔的樹(shù)形表示。
來(lái)自朋友們的一點(diǎn)幫助
介紹完這些基礎(chǔ)知識(shí)后,我曾計(jì)劃過(guò)深入研究控制組的更多細(xì)節(jié),以及如何使用,但是我在 Opensource.com 的姐妹網(wǎng)站 Enable Sysadmin 上發(fā)現(xiàn)了一系列四篇優(yōu)秀文章,由 Red Hat 公司的 Steve Ovens 所作。與其從頭重寫(xiě) Steve 的文章,我覺(jué)得倒不如通過(guò)鏈接到這些文章,利用他的控制組專(zhuān)業(yè)知識(shí):
- 一個(gè) Linux 系統(tǒng)管理員對(duì)控制組的介紹
- 如何用 CPUShares 管理控制組
- 用更難的方式,手動(dòng)管理控制組
- 用 systemd 管理控制組
像我一樣享受這些文章并從中汲取知識(shí)吧。
其他資源
互聯(lián)網(wǎng)上充斥著大量關(guān)于 systemd 的信息,但大部分都簡(jiǎn)短生硬、愚鈍、甚至令人誤解。除了本文提到的資源,下面的網(wǎng)頁(yè)提供了關(guān)于 systemd 啟動(dòng)更詳細(xì)可靠的信息。自從我開(kāi)始這一系列的文章來(lái)反映我所做的研究以來(lái),這個(gè)的列表已經(jīng)變長(zhǎng)了。
- Fedora 項(xiàng)目有一個(gè)優(yōu)質(zhì)實(shí)用的 systemd 指南,幾乎有你使用 systemd 配置、管理、維護(hù)一個(gè) Fedora 計(jì)算機(jī)需要知道的一切。
- Fedora 項(xiàng)目還有一個(gè)好用的 速查表,交叉引用了古老的 SystemV 命令和對(duì)應(yīng)的 systemd 命令。
- systemd.unit(5) 手冊(cè)頁(yè) 包含了一個(gè)不錯(cuò)的單元文件中各個(gè)節(jié)的列表,以及這些節(jié)的配置選項(xiàng)和簡(jiǎn)潔的描述。
- Red Hat 文檔包含了一個(gè) 單元文件結(jié)構(gòu) 的有用描述,還有一些其他的重要信息。
- 要獲取 systemd 的詳細(xì)技術(shù)信息和創(chuàng)立的原因,查看 Freedesktop.org 的 systemd 描 述。這個(gè)使我發(fā)現(xiàn)過(guò)的最棒頁(yè)面之一,因?yàn)槠渲邪嗽S多指向其他重要準(zhǔn)確文檔的鏈接。
- Linux.com 上 “systemd 的更多樂(lè)趣” 提供了更高級(jí)的 systemd 信息和提示。
- 查看 systemd.resource-control(5) 的手冊(cè)頁(yè)
- 查看 Linux 內(nèi)核用戶(hù)和管理員指南 中的 控制組 v2 條目。
原文鏈接:https://linux.cn/article-13881-1.html