在Debian上使用systemd工具對系統(tǒng)進行管理的方法
“一個軟件只做一件事情”的哲學思想已經(jīng)被這個新來者徹底顛覆。除了取代了 sysvinit 成為新的系統(tǒng)初始化工具外,systemd 還是一個系統(tǒng)管理工具。目前為止,由于 systemd-sysv 這個軟件包提供的兼容性,那些我們使用慣了的工具還能繼續(xù)工作。但是當 Debian 將 systemd 升級到214版本后,這種兼容性就不復存在了。升級措施預計會在 Debian 8 "Jessie" 的穩(wěn)定分支上進行。從此以后用戶必須使用新的命令來管理系統(tǒng)、執(zhí)行任務(wù)、變換運行級別、查詢系統(tǒng)日志等等。不過這里有一個應(yīng)對方案,那就是在 .bashrc 文件里面添加一些別名。
現(xiàn)在就讓我們來看看 systemd 是怎么改變你管理系統(tǒng)的習慣的。在使用 systemd 之前,你得先把 sysvinit 保存起來,以便在 systemd 出錯的時候還能用 sysvinit 啟動系統(tǒng)。這種方法只有在沒安裝 systemd-sysv 的情況下才能生效,具體操作方法如下:
在緊急情況下,可以把下面的文本:
添加到內(nèi)核啟動參數(shù)項那里。
systemctl 的基本用法
systemctl 的功能是替代“/etc/init.d/foo start/stop”這類命令,另外,其實它還能做其他的事情,這點你可以參考 man 文檔。
一些基本用法:
systemctl - 列出所有單元(UNIT)以及它們的狀態(tài)(這里的 UNIT 指的就是系統(tǒng)上的 job 和 service)
systemctl list-units - 列出所有 UNIT
systemctl start [NAME...] - 啟動一項或多項 UNIT
systemctl stop [NAME...] - 停止一項或多項 UNIT
systemctl disable [NAME...] - 將 UNIT 設(shè)置為開機不啟動
systemctl list-unit-files - 列出所有已安裝的 UNIT,以及它們的狀態(tài)
systemctl --failed - 列出開機啟動失敗的 UNIT
systemctl --type=mount - 列出某種類型的 UNIT,類型包含:service, mount, device, socket, target
systemctl enable debug-shell.service - 將一個 shell 腳本設(shè)置為開機啟動,用于調(diào)試
為了更方便處理這些 UNIT,你可以使用 systemd-ui 軟件包,你只要輸入 systemadm 命令就可以使用這個軟件。
你同樣可以使用 systemctl 實現(xiàn)轉(zhuǎn)換運行級別、重啟系統(tǒng)和關(guān)閉系統(tǒng)的功能:
systemctl isolate graphical.target - 切換到運行級別5,就是有桌面的運行級別
systemctl isolate multi-user.target - 切換到運行級別3,沒有桌面的運行級別
systemctl reboot - 重啟系統(tǒng)
systemctl poweroff - 關(guān)機
所有命令,包括切換到其他運行級別的命令,都可以在普通用戶的權(quán)限下執(zhí)行。
journalctl 的基本用法
systemd 不僅提供了比 sysvinit 更快的啟動速度,還讓日志系統(tǒng)在更早的時候啟動起來,可以記錄內(nèi)核初始化階段、內(nèi)存初始化階段、前期啟動步驟以及主要的系統(tǒng)執(zhí)行過程的日志。所以,以前那種需要通過對顯示屏拍照或者暫停系統(tǒng)來調(diào)試程序的日子已經(jīng)一去不復返啦。
systemd 的日志文件都被放在 /var/log 目錄。如果你想使用它的日志功能,需要執(zhí)行一些命令,因為 Debian 沒有打開日志功能。命令如下:
# mkdir -p /var/log/journal
# chown root:systemd-journal /var/log/journal
# gpasswd -a $user systemd-journal
通過上面的設(shè)置,你就可以以普通用戶權(quán)限使用 journal 軟件查看日志。使用 journalctl 查詢?nèi)罩究梢垣@得一些比 syslog 軟件更方便的玩法:
journalctl --all - 顯示系統(tǒng)上所有日志,以及它的用戶
journalctl -f - 監(jiān)視系統(tǒng)日志的變化(類似 tail -f /var/log/messages 的效果)
journalctl -b - 顯示系統(tǒng)啟動以后的日志
journalctl -k -b -1 - 顯示上一次(-b -1)系統(tǒng)啟動前產(chǎn)生的內(nèi)核日志
journalctl -b -p err - 顯示系統(tǒng)啟動后產(chǎn)生的“ERROR”日志
journalctl --since=yesterday - 當系統(tǒng)不會經(jīng)常重啟的時候,這條命令能提供比 -b 更短的日志記錄
journalctl -u cron.service --since='2014-07-06 07:00' --until='2014-07-06 08:23' - 顯示 cron 服務(wù)在某個時間段內(nèi)打印出來的日志
journalctl -p 2 --since=today - 顯示優(yōu)先級別為2以內(nèi)的日志,包含 emerg、alert、crit三個級別。所有日志級別有: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7)
journalctl > yourlog.log - 將二進制日志文件復制成文本文件并保存到當前目錄
Journal 和 syslog 可以很好的共存。而另一方面,一旦你習慣了操作 journal,你也可以卸載掉所有 syslog 的軟件,比如 rsyslog 或 syslog-ng。
如果想要得到更詳細的日志信息,你可以在內(nèi)核啟動參數(shù)上添加“systemd.log_level=debug”,然后運行下面的命令:
你也可以編輯 /etc/systemd/system.conf 文件來修改日志級別。
利用 systemd 分析系統(tǒng)啟動過程
systemd 可以讓你能更有效地分析和優(yōu)化你的系統(tǒng)啟動過程:
systemd-analyze - 顯示本次啟動系統(tǒng)過程中用戶態(tài)和內(nèi)核態(tài)所花的時間
systemd-analyze blame - 顯示每個啟動項所花費的時間明細
systemd-analyze critical-chain - 按時間順序打印 UNIT 樹
systemd-analyze dot | dot -Tsvg > systemd.svg - 為開機啟動過程生成向量圖(需要安裝 graphviz 軟件包)
systemd-analyze plot > bootplot.svg - 產(chǎn)生開機啟動過程的時間圖表

systemd 雖然是個年輕的項目,但已有大量文檔。首先要介紹給你的是Lennart Poettering 的 0pointer 系列。這個系列非常詳細,非常有技術(shù)含量。另外一個是免費桌面信息文檔,它包含了最詳細的關(guān)于 systemd 的鏈接:發(fā)行版特性文件、bug 跟蹤系統(tǒng)和說明文檔。你可以使用下面的命令來查詢 systemd 都提供了哪些文檔:
不同發(fā)行版之間的 systemd 提供的命令基本一樣,最大的不同之處就是打包方式。
相關(guān)文章

Ubuntu 26.04 LTS(Resolute Raccoon)發(fā)布:內(nèi)存要求提至6GB
2026-04-23,Ubuntu 26.04 LTS 正式版按計劃如期發(fā)布,Ubuntu 26.04 LTS 搭載 Linux 內(nèi)核 7.0 和 GNOME 50 桌面環(huán)境,原生集成英偉達 CUDA,內(nèi)存要求提至 6GB2026-04-24
桌面生產(chǎn)力直接拉滿! Ubuntu安裝后別急著用這7個設(shè)置一定要改
Ubuntu桌面系統(tǒng)安裝成功后,不要急著使用,修改后桌面生產(chǎn)力直接拉滿,今天我就把這7個我每次必改的設(shè)置完整分享出來,配上詳細步驟和實際效果2026-04-15
CPU和硬盤要求保持不變! Ubuntu 26.04 LTS最低內(nèi)存運行要求提高到 6GB
Canonical即將發(fā)布“Resolute Raccoon”Ubuntu 26.04 LTS操作系統(tǒng),資料顯示推薦內(nèi)存提高至6GB,這是2018年以來首次重大變動2026-04-08
基于Linux7.0+GNOME50+Mesa26.0! Ubuntu 26.04 LTS Beta 版發(fā)布
Ubuntu 26.04 LTS測試版如期發(fā)布,此次更新將集成大量前沿開源技術(shù),Beta 測試版搭載了尚處于開發(fā)階段的 Linux 7.0 內(nèi)核、默認采用最新的 GNOME 50.0 桌面組件、全新的 Mes2026-03-27
Ubuntu桌面系統(tǒng)爆致命漏洞! 30天可拿root權(quán)限
近日,全球知名網(wǎng)絡(luò)安全研究機構(gòu)Qualys的威脅研究部門正式披露了Ubuntu桌面系統(tǒng)的一個高危本地提權(quán)漏洞,其官方漏洞編號為CVE-2026-38882026-03-21
Ubuntu 25.10 系統(tǒng)正式發(fā)布:搭載 Linux 6.17 內(nèi)核
Ubuntu 25.10 系統(tǒng)代號“Questing Quokka”現(xiàn)已推出,集成最新的 GNOME 49 桌面環(huán)境,默認僅啟用 Wayland 會話,提升了圖形體驗2025-10-10
Debian 13升級后網(wǎng)絡(luò)轉(zhuǎn)發(fā)等功能異常怎么辦? 并非錯誤而是管理機制變更
很多朋友反饋,更新到Debian 13后網(wǎng)絡(luò)轉(zhuǎn)發(fā)等功能異常,這并非 BUG 而是 Debian 13 Trixie 調(diào)整了管理機制,具體來說是sysctl變更為由systemd-sysctl主導且配置文件變成模塊2025-08-22
SSH中斷/寶塔面板異常/分區(qū)問題等! Debian 13升級注意事項匯總
前一段時間發(fā)布了debian13,我們也分享了debian12升級到debian13的圖文教程,很多朋友在升級的時候遇到了不少問題,今天我們就來看看Debian 13升級注意事項2025-08-21
Debian12怎么升級到Debian13? Debian系統(tǒng)升級教程
心念念的Debian13終于正式發(fā)布了,該怎么升級呢?下面我們就來看看Debian12升級到 Debian13的教程2025-08-21
Ubuntu 24.04.3 LTS 正式發(fā)布: 附更新內(nèi)容匯總
Ubuntu 24.04 這一長期支持版本發(fā)布了第三個點版本升級:Ubuntu 24.04.3 LTS,涵蓋桌面、服務(wù)器與云等版本,主要是將過去數(shù)月發(fā)布的安全更新、錯誤修復和穩(wěn)定性改進整合入2025-08-09


