溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2021-09-03 15:36:41 來(lái)源:億速云 閱讀:156 作者:chen 欄目:系統(tǒng)運(yùn)維

本篇內(nèi)容主要講解“l(fā)inux中systemd命令的運(yùn)行級(jí)別與其常見(jiàn)應(yīng)用”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“l(fā)inux中systemd命令的運(yùn)行級(jí)別與其常見(jiàn)應(yīng)用”吧!

運(yùn)行級(jí)別 vs. 狀態(tài)

SysVInit使用靜態(tài)的運(yùn)行級(jí)別來(lái)構(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ì)于我來(lái)說(shuō),使用多個(gè)運(yùn)行級(jí)別并沒(méi)有太大的好處,但它們卻一直在系統(tǒng)中存在著。 不同于運(yùn)行級(jí)別,systemd可以創(chuàng)建不同的狀態(tài),狀態(tài)提供了靈活的機(jī)制來(lái)設(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):

   

代碼如下:

[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文件長(zhǎng)什么樣? 我來(lái)給大家找個(gè)例子。 unit文件存放在下面的兩個(gè)目錄下:

   

代碼如下:

/etc/systemd/system/
   /usr/lib/systemd/system/

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

   

代碼如下:

[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ì)于新手而言,上面的文件也是非常簡(jiǎn)單易懂的。這可比SysVInit的init文件要簡(jiǎn)單多了,為了便于比較,下面截取了/etc/init.d/apache2的一個(gè)片段:

   

代碼如下:

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)系給嚇到:

   

代碼如下:

$ systemctl list-dependencies httpd.service

cgroups

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

   

代碼如下:

$ systemd-cgls

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

   

代碼如下:

$ ps xawf -eo pid,user,cgroup,args

常用命令集

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

   

代碼如下:

# systemctl reload httpd.service

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

   

代碼如下:

# systemctl restart httpd.service

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

   

代碼如下:

# systemctl daemon-reload

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

   

代碼如下:

$ systemctl reboot
   $ systemctl suspend
   $ systemctl poweroff

到此,相信大家對(duì)“l(fā)inux中systemd命令的運(yùn)行級(jí)別與其常見(jiàn)應(yīng)用”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI