主頁 > 知識(shí)庫 > 詳解linux中systemd命令的運(yùn)行級(jí)別與其常見應(yīng)用

詳解linux中systemd命令的運(yùn)行級(jí)別與其常見應(yīng)用

熱門標(biāo)簽:廳外呼梯系統(tǒng)布線 淘寶系統(tǒng)退貨外呼項(xiàng)目考試答案 貴陽語音電銷機(jī)器人招商 百度地圖標(biāo)注陰影動(dòng)態(tài) 2020電銷機(jī)器人排行 焦作人工智能電話機(jī)器人軟件 鹽城客服外呼系統(tǒng)軟件 鄭州營銷外呼系統(tǒng)運(yùn)營商 北京市地圖標(biāo)注

從很久很久以前我們就在使用靜態(tài)運(yùn)行級(jí)別。而systemd提供了更為動(dòng)態(tài)靈活的機(jī)制,來管控你的系統(tǒng)。

在開始介紹systemd命令前,讓我們先簡單的回顧一下歷史。在Linux世界里,有一個(gè)很奇怪的現(xiàn)象,一方面Linux和自由軟件(FOSS)在不斷的向前推進(jìn),另一方面人們對(duì)這些變化卻不斷的抱怨。這就是為什么我要在此稍稍提及那些反對(duì)systemd所引起的爭論的原因,因?yàn)槲乙廊挥浀脷v史上有不少類似的爭論:

  •     軟件包(Pacakge)是邪惡的,因?yàn)檎嬲腖inux用戶會(huì)從源碼構(gòu)建他所想要的的一切,并嚴(yán)格的管理系統(tǒng)中安裝的軟件。
        解析依賴關(guān)系的包管理器是邪惡的,真正的Linux用戶會(huì)手動(dòng)解決這些該死的依賴關(guān)系。
        apt-get總能把事情干好,所以只有Yum是邪惡的。
        Red Hat簡直就是Linux中的微軟。
     

諸如此類...就像我之前常常說的一樣,變化總是讓人沮喪。這些該死的變化攪亂了我的工作流程,這可不是一件小事情,任何業(yè)務(wù)流程的中斷,都會(huì)直接影響到生產(chǎn)力。但是,我們現(xiàn)在還處于計(jì)算機(jī)發(fā)展的嬰兒期,在未來的很長的一段時(shí)間內(nèi)將會(huì)持續(xù)有快速的變化和發(fā)展。想必大家應(yīng)該都認(rèn)識(shí)一些因循守舊的人,在他們的心里,商品一旦買回家以后就是恒久不變的,就像是買了一把扳手、一套家具或是一個(gè)粉紅色的火烈鳥草坪裝飾品。就是這些人,仍然在堅(jiān)持使用Windows Vista,甚至還有人在使用運(yùn)行Windows 95的老破爛機(jī)器和CRT顯示器。他們不能理解為什么要去換一臺(tái)新機(jī)器。老的還能用啊,不是么?

這讓我回憶起了我在維護(hù)老電腦上的一項(xiàng)偉大的成就,那臺(tái)破電腦真的早就該淘汰掉。從前我有個(gè)朋友有一臺(tái)286的老機(jī)器,安裝了一個(gè)極其老的MS-DOS版本。她使用這臺(tái)電腦來處理一些簡單的任務(wù),比如說約會(huì)、日記、記賬等,我還用BASIC給她寫了一個(gè)簡單的記賬軟件。她不用關(guān)注任何安全更新,是這樣么?因?yàn)樗鼔焊紱]有聯(lián)網(wǎng)。所以我會(huì)時(shí)不時(shí)給她維修一下電腦,更換電阻、電容、電源或者是CMOS電池什么的。它竟然還一直能用。它那袖珍的琥珀CRT顯示器變得越來越暗,在使用了20多年后,終于退出了歷史舞臺(tái)?,F(xiàn)在我的這位朋友,換了一臺(tái)運(yùn)行Linux的老Thinkpad,來干同樣的活。

前面的話題有點(diǎn)偏題了,下面抓緊時(shí)間開始介紹systemd。
運(yùn)行級(jí)別 vs. 狀態(tài)

SysVInit使用靜態(tài)的運(yùn)行級(jí)別來構(gòu)建不同的啟動(dòng)狀態(tài),大部分發(fā)布版本中提供了以下5個(gè)運(yùn)行級(jí)別:

  •     單用戶模式(Single-user mode)
        多用戶模式,不啟動(dòng)網(wǎng)絡(luò)服務(wù)(Multi-user mode without network services started)
        多用戶模式,啟動(dòng)網(wǎng)絡(luò)服務(wù)(Multi-user mode with network services started)
        系統(tǒng)關(guān)機(jī)(System shutdown)
        系統(tǒng)重啟(System reboot)

對(duì)于我來說,使用多個(gè)運(yùn)行級(jí)別并沒有太大的好處,但它們卻一直在系統(tǒng)中存在著。 不同于運(yùn)行級(jí)別,systemd可以創(chuàng)建不同的狀態(tài),狀態(tài)提供了靈活的機(jī)制來設(shè)置啟動(dòng)時(shí)的配置項(xiàng)。這些狀態(tài)是由多個(gè)unit文件組成的,狀態(tài)又叫做啟動(dòng)目標(biāo)(target)。啟動(dòng)目標(biāo)有一個(gè)清晰的描述性命名,而不是像運(yùn)行級(jí)別那樣使用數(shù)字。unit文件可以控制服務(wù)、設(shè)備、套接字和掛載點(diǎn)。參考下/usr/lib/systemd/system/graphical.target,這是CentOS 7默認(rèn)的啟動(dòng)目標(biāo):

   

復(fù)制代碼
代碼如下:
[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
After=multi-user.target
Conflicts=rescue.target
Wants=display-manager.service
AllowIsolate=yes
[Install]
Alias=default.target

現(xiàn)在再看看unit文件長什么樣? 我來給大家找個(gè)例子。 unit文件存放在下面的兩個(gè)目錄下:

   

復(fù)制代碼
代碼如下:
/etc/systemd/system/
/usr/lib/systemd/system/

我們可以修改第一個(gè)目錄中的文件來進(jìn)行自定義配置,而第二個(gè)目錄中的文件是包安裝時(shí)保存的備份。/etc/systemd/system/的優(yōu)先級(jí)高于/usr/lib/systemd/system/。不錯(cuò),用戶優(yōu)先級(jí)高于機(jī)器。下面是Apache Web server的unit文件:

   

復(fù)制代碼
代碼如下:
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd/ $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi.user.target

就算是對(duì)于新手而言,上面的文件也是非常簡單易懂的。這可比SysVInit的init文件要簡單多了,為了便于比較,下面截取了/etc/init.d/apache2的一個(gè)片段:

   

復(fù)制代碼
代碼如下:
SCRIPTNAME="${0##*/}"
SCRIPTNAME="${SCRIPTNAME##[KS][0-9][0-9]}"
if [ -n "$APACHE_CONFDIR" ] ; then
if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
DIR_SUFFIX="${APACHE_CONFDIR##/etc/apache2-}"
else
DIR_SUFFIX=

整個(gè)文件一共有410行。

你可以檢查unit文件的依賴關(guān)系,我常常被這些復(fù)雜的依賴關(guān)系給嚇到:

   

復(fù)制代碼
代碼如下:
$ systemctl list-dependencies httpd.service

cgroups

cgroups,或者叫控制組,在Linux內(nèi)核里已經(jīng)出現(xiàn)好幾年了,但直到systemd的出現(xiàn)才被真正使用起來。The kernel documentation中是這樣描述cgroups的:“控制組提供層次化的機(jī)制來管理任務(wù)組,使用它可以聚合和拆分任務(wù)組,并管理任務(wù)組后續(xù)產(chǎn)生的子任務(wù)。”換句話說,它提供了多種有效的方式來控制、限制和分配資源。systemd使用了cgroups,你可以便捷的查看它,使用下面的命令可以展示你系統(tǒng)中的整個(gè)cgroup樹:

   

復(fù)制代碼
代碼如下:
$ systemd-cgls

你可以使用ps命令來進(jìn)行查看cgroup樹:

   

復(fù)制代碼
代碼如下:
$ ps xawf -eo pid,user,cgroup,args

常用命令集

下面的命令行展示了如何為守護(hù)進(jìn)程重新裝載配置文件,注意不是systemd服務(wù)文件。 使用這個(gè)命令能夠激活新的配置項(xiàng),且盡可能少的打斷業(yè)務(wù)進(jìn)程,下面以Apache為例:

   

復(fù)制代碼
代碼如下:
# systemctl reload httpd.service

重新裝載服務(wù)文件(service file)需要完全停止和重新啟動(dòng)服務(wù)。如果服務(wù)掛死了,用下面的命令行可以恢復(fù)它:

   

復(fù)制代碼
代碼如下:
# systemctl restart httpd.service

你還可以用一個(gè)命令重啟所有的守護(hù)進(jìn)程。這個(gè)命令會(huì)重新裝載所有守護(hù)進(jìn)程的unit文件,然后重新生成依賴關(guān)系樹:

   

復(fù)制代碼
代碼如下:
# systemctl daemon-reload

在非特權(quán)模式下,你也可以進(jìn)行重啟、掛起、關(guān)機(jī)操作:

   

復(fù)制代碼
代碼如下:
$ systemctl reboot
$ systemctl suspend
$ systemctl poweroff

標(biāo)簽:樂山 青島 大理 大興安嶺 周口 大慶 遼寧 六安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解linux中systemd命令的運(yùn)行級(jí)別與其常見應(yīng)用》,本文關(guān)鍵詞  詳解,linux,中,systemd,命令,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解linux中systemd命令的運(yùn)行級(jí)別與其常見應(yīng)用》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解linux中systemd命令的運(yùn)行級(jí)別與其常見應(yīng)用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章