在Debian上使用systemd工具對(duì)系統(tǒng)進(jìn)行管理的方法

“一個(gè)軟件只做一件事情”的哲學(xué)思想已經(jīng)被這個(gè)新來(lái)者徹底顛覆。除了取代了 sysvinit 成為新的系統(tǒng)初始化工具外,systemd 還是一個(gè)系統(tǒng)管理工具。目前為止,由于 systemd-sysv 這個(gè)軟件包提供的兼容性,那些我們使用慣了的工具還能繼續(xù)工作。但是當(dāng) Debian 將 systemd 升級(jí)到214版本后,這種兼容性就不復(fù)存在了。升級(jí)措施預(yù)計(jì)會(huì)在 Debian 8 "Jessie" 的穩(wěn)定分支上進(jìn)行。從此以后用戶(hù)必須使用新的命令來(lái)管理系統(tǒng)、執(zhí)行任務(wù)、變換運(yùn)行級(jí)別、查詢(xún)系統(tǒng)日志等等。不過(guò)這里有一個(gè)應(yīng)對(duì)方案,那就是在 .bashrc 文件里面添加一些別名。
現(xiàn)在就讓我們來(lái)看看 systemd 是怎么改變你管理系統(tǒng)的習(xí)慣的。在使用 systemd 之前,你得先把 sysvinit 保存起來(lái),以便在 systemd 出錯(cuò)的時(shí)候還能用 sysvinit 啟動(dòng)系統(tǒng)。這種方法只有在沒(méi)安裝 systemd-sysv 的情況下才能生效,具體操作方法如下:
在緊急情況下,可以把下面的文本:
添加到內(nèi)核啟動(dòng)參數(shù)項(xiàng)那里。
systemctl 的基本用法
systemctl 的功能是替代“/etc/init.d/foo start/stop”這類(lèi)命令,另外,其實(shí)它還能做其他的事情,這點(diǎn)你可以參考 man 文檔。
一些基本用法:
systemctl - 列出所有單元(UNIT)以及它們的狀態(tài)(這里的 UNIT 指的就是系統(tǒng)上的 job 和 service)
systemctl list-units - 列出所有 UNIT
systemctl start [NAME...] - 啟動(dòng)一項(xiàng)或多項(xiàng) UNIT
systemctl stop [NAME...] - 停止一項(xiàng)或多項(xiàng) UNIT
systemctl disable [NAME...] - 將 UNIT 設(shè)置為開(kāi)機(jī)不啟動(dòng)
systemctl list-unit-files - 列出所有已安裝的 UNIT,以及它們的狀態(tài)
systemctl --failed - 列出開(kāi)機(jī)啟動(dòng)失敗的 UNIT
systemctl --type=mount - 列出某種類(lèi)型的 UNIT,類(lèi)型包含:service, mount, device, socket, target
systemctl enable debug-shell.service - 將一個(gè) shell 腳本設(shè)置為開(kāi)機(jī)啟動(dòng),用于調(diào)試
為了更方便處理這些 UNIT,你可以使用 systemd-ui 軟件包,你只要輸入 systemadm 命令就可以使用這個(gè)軟件。
你同樣可以使用 systemctl 實(shí)現(xiàn)轉(zhuǎn)換運(yùn)行級(jí)別、重啟系統(tǒng)和關(guān)閉系統(tǒng)的功能:
systemctl isolate graphical.target - 切換到運(yùn)行級(jí)別5,就是有桌面的運(yùn)行級(jí)別
systemctl isolate multi-user.target - 切換到運(yùn)行級(jí)別3,沒(méi)有桌面的運(yùn)行級(jí)別
systemctl reboot - 重啟系統(tǒng)
systemctl poweroff - 關(guān)機(jī)
所有命令,包括切換到其他運(yùn)行級(jí)別的命令,都可以在普通用戶(hù)的權(quán)限下執(zhí)行。
journalctl 的基本用法
systemd 不僅提供了比 sysvinit 更快的啟動(dòng)速度,還讓日志系統(tǒng)在更早的時(shí)候啟動(dòng)起來(lái),可以記錄內(nèi)核初始化階段、內(nèi)存初始化階段、前期啟動(dòng)步驟以及主要的系統(tǒng)執(zhí)行過(guò)程的日志。所以,以前那種需要通過(guò)對(duì)顯示屏拍照或者暫停系統(tǒng)來(lái)調(diào)試程序的日子已經(jīng)一去不復(fù)返啦。
systemd 的日志文件都被放在 /var/log 目錄。如果你想使用它的日志功能,需要執(zhí)行一些命令,因?yàn)?Debian 沒(méi)有打開(kāi)日志功能。命令如下:
# mkdir -p /var/log/journal
# chown root:systemd-journal /var/log/journal
# gpasswd -a $user systemd-journal
通過(guò)上面的設(shè)置,你就可以以普通用戶(hù)權(quán)限使用 journal 軟件查看日志。使用 journalctl 查詢(xún)?nèi)罩究梢垣@得一些比 syslog 軟件更方便的玩法:
journalctl --all - 顯示系統(tǒng)上所有日志,以及它的用戶(hù)
journalctl -f - 監(jiān)視系統(tǒng)日志的變化(類(lèi)似 tail -f /var/log/messages 的效果)
journalctl -b - 顯示系統(tǒng)啟動(dòng)以后的日志
journalctl -k -b -1 - 顯示上一次(-b -1)系統(tǒng)啟動(dòng)前產(chǎn)生的內(nèi)核日志
journalctl -b -p err - 顯示系統(tǒng)啟動(dòng)后產(chǎn)生的“ERROR”日志
journalctl --since=yesterday - 當(dāng)系統(tǒng)不會(huì)經(jīng)常重啟的時(shí)候,這條命令能提供比 -b 更短的日志記錄
journalctl -u cron.service --since='2014-07-06 07:00' --until='2014-07-06 08:23' - 顯示 cron 服務(wù)在某個(gè)時(shí)間段內(nèi)打印出來(lái)的日志
journalctl -p 2 --since=today - 顯示優(yōu)先級(jí)別為2以?xún)?nèi)的日志,包含 emerg、alert、crit三個(gè)級(jí)別。所有日志級(jí)別有: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7)
journalctl > yourlog.log - 將二進(jìn)制日志文件復(fù)制成文本文件并保存到當(dāng)前目錄
Journal 和 syslog 可以很好的共存。而另一方面,一旦你習(xí)慣了操作 journal,你也可以卸載掉所有 syslog 的軟件,比如 rsyslog 或 syslog-ng。
如果想要得到更詳細(xì)的日志信息,你可以在內(nèi)核啟動(dòng)參數(shù)上添加“systemd.log_level=debug”,然后運(yùn)行下面的命令:
你也可以編輯 /etc/systemd/system.conf 文件來(lái)修改日志級(jí)別。
利用 systemd 分析系統(tǒng)啟動(dòng)過(guò)程
systemd 可以讓你能更有效地分析和優(yōu)化你的系統(tǒng)啟動(dòng)過(guò)程:
systemd-analyze - 顯示本次啟動(dòng)系統(tǒng)過(guò)程中用戶(hù)態(tài)和內(nèi)核態(tài)所花的時(shí)間
systemd-analyze blame - 顯示每個(gè)啟動(dòng)項(xiàng)所花費(fèi)的時(shí)間明細(xì)
systemd-analyze critical-chain - 按時(shí)間順序打印 UNIT 樹(shù)
systemd-analyze dot | dot -Tsvg > systemd.svg - 為開(kāi)機(jī)啟動(dòng)過(guò)程生成向量圖(需要安裝 graphviz 軟件包)
systemd-analyze plot > bootplot.svg - 產(chǎn)生開(kāi)機(jī)啟動(dòng)過(guò)程的時(shí)間圖表
systemd 雖然是個(gè)年輕的項(xiàng)目,但已有大量文檔。首先要介紹給你的是Lennart Poettering 的 0pointer 系列。這個(gè)系列非常詳細(xì),非常有技術(shù)含量。另外一個(gè)是免費(fèi)桌面信息文檔,它包含了最詳細(xì)的關(guān)于 systemd 的鏈接:發(fā)行版特性文件、bug 跟蹤系統(tǒng)和說(shuō)明文檔。你可以使用下面的命令來(lái)查詢(xún) systemd 都提供了哪些文檔:
不同發(fā)行版之間的 systemd 提供的命令基本一樣,最大的不同之處就是打包方式。
相關(guān)文章
新特性搶先看! Ubuntu 25.04 Beta 發(fā)布:Linux 6.14 內(nèi)核
Canonical公司近日發(fā)布了Ubuntu 25.04 Beta版,這一版本被賦予了一個(gè)活潑的代號(hào)——“Plucky Puffin”(勇敢的海雀),據(jù)悉,正式的穩(wěn)定版預(yù)計(jì)將在2025年4月17日與廣大用戶(hù)2025-03-29如何讓 Ubuntu 居中顯示窗口? 3種方法實(shí)現(xiàn)Ubuntu窗口居中顯示
個(gè)人習(xí)慣不管打開(kāi)終端窗口還是文件管理器窗口,都希望居中顯示,不太喜歡Linux下自動(dòng)隨意的擺放位置,下面我們就來(lái)看看詳細(xì)設(shè)置方法2025-03-11Ubuntu 24.04.2 LTS 正式發(fā)布: 帶來(lái)全新硬件支持啟用堆棧HWE
buntu 24.04 LTS 的第 2 個(gè)小版本Ubuntu 24.04.2 LTS 正式發(fā)布,出了修復(fù)漏洞以外,它還帶來(lái)了全新的硬件支持啟用堆棧(HWE),讓系統(tǒng)性能和硬件兼容性更上一層樓2025-02-25怎么關(guān)閉Ubuntu無(wú)人值守升級(jí)? Ubuntu禁止自動(dòng)更新的技巧
Ubuntu Linux系統(tǒng)禁止自動(dòng)更新的時(shí)候,提示“無(wú)人值守升級(jí)在關(guān)機(jī)期間,請(qǐng)不要關(guān)閉計(jì)算機(jī)進(jìn)程”,該怎么解決這個(gè)問(wèn)題?詳細(xì)請(qǐng)看下文介紹2025-01-20高效管理你的Linux系統(tǒng): Debian操作系統(tǒng)常用命令指南
在Debian操作系統(tǒng)中,了解和掌握常用命令對(duì)于提高工作效率和系統(tǒng)管理至關(guān)重要,本文將詳細(xì)介紹Debian的常用命令,幫助讀者更好地使用和管理Debian系統(tǒng)2025-01-20debian更新系統(tǒng)的命令怎么用? 輕松配置Debian自動(dòng)更新的技巧
Debian不手動(dòng)更新怎么體驗(yàn)新系統(tǒng)?Debian提供了一個(gè)既簡(jiǎn)單又高效的解決辦法——自動(dòng)更新,該怎么用呢?詳細(xì)請(qǐng)看下文介紹2025-01-20如何配置Ubuntu無(wú)人值守升級(jí)? 手動(dòng)操作實(shí)現(xiàn)Ubuntu自動(dòng)升級(jí)技巧
無(wú)人值守升級(jí)是一個(gè)用于自動(dòng)更新 Debian 和 Ubuntu 系統(tǒng)的開(kāi)源項(xiàng)目,該項(xiàng)目的主要目的是確保系統(tǒng)能夠定期自動(dòng)安裝安全更新,從而保持系統(tǒng)的安全性和穩(wěn)定性2025-01-20Ubuntu系統(tǒng)怎么安裝Warp? 新一代AI 終端神器安裝使用方法
Warp是一款使用Rust開(kāi)發(fā)的現(xiàn)代化AI 終端工具,該怎么再Ubuntu系統(tǒng)中安裝使用呢?下面我們就來(lái)看看詳細(xì)教程2025-01-20Debian如何查看系統(tǒng)版本? 7種輕松查看Debian版本信息的實(shí)用方法
Debian是一個(gè)廣泛使用的Linux發(fā)行版,用戶(hù)有時(shí)需要查看其版本信息以進(jìn)行系統(tǒng)管理、故障排除或兼容性檢查,在Debian系統(tǒng)中,有幾種不同的方法可以查看版本信息2025-01-17解決VMware中Ubuntu虛擬機(jī)鼠標(biāo)閃爍或指針位置不正確的方案
剛下載虛擬機(jī)后,電腦在虛擬機(jī)內(nèi)出現(xiàn)了鼠標(biāo)閃爍或者鼠標(biāo)指針位置不對(duì)的問(wèn)題,該怎么解決呢?下面我們就來(lái)看看詳細(xì)教程2025-01-09