Linux:運行級別與重新啟動
學(xué)習(xí)關(guān)閉或重啟您的 Linux 系統(tǒng),警告用戶系統(tǒng)正在關(guān)閉,切換到一個多少有點限制性的運行級別。這一流程對于許多Linux 愛好者來說,還很陌生。下面請IBM的高級程序員Ian Shields具體介紹下Linux的運行級別、關(guān)機和重新啟動。
概述
在本文中,學(xué)習(xí)關(guān)閉或重啟您的 Linux 系統(tǒng),警告用戶系統(tǒng)正在關(guān)閉,請切換到單用戶模式或者一個多少有點限制性的運行級別。學(xué)習(xí):
•設(shè)置默認(rèn)運行級別
•運行級別間的變化
•改為單用戶模式
•從命令行關(guān)閉或重啟系統(tǒng)
•警告用戶主要系統(tǒng)事件,包括切換到另一個運行級別
•適當(dāng)?shù)亟K止進程
除非特殊說明,本文中的示例使用帶有 2.6.26 內(nèi)核的 Fedora 8。upstar 示例使用的是帶有 2.6.34 內(nèi)核的 Fedora 13,或者是帶有 2.6.35 內(nèi)核的 Ubuntu 10.10。您的結(jié)果在其他系統(tǒng)上可能有所不同。
先決條件
為了最有效地利用本系列中的文章,您應(yīng)該具有基本的 Linux 知識,并需要準(zhǔn)備一個 Linux 系統(tǒng),用于練習(xí)本文介紹的命令。有時候不同版本的程序輸出格式不同,因此您所得到的結(jié)果未必總是與這里所示的清單和圖相同。特別是,最近出現(xiàn)的系統(tǒng)已經(jīng)改變了很多傳統(tǒng) System V init 進程用戶所熟悉的內(nèi)容(更多細(xì)節(jié)見 Init vs. Upstart)。本文是針對傳統(tǒng) System V init 進程的,只對 upstar 的區(qū)別進行了粗略的概述。
運行級別
運行級別 定義了在 Linux 系統(tǒng)的當(dāng)前狀態(tài)(或運行級別)可以完成的任務(wù)。每個 Linux 系統(tǒng)支持 3 個基本運行級別,外加一個或多個用于正常操作的運行級別?;具\行級別如 表 1 所示。
級別 |
目的 |
0 | 關(guān)閉(或終止)系統(tǒng) |
1 | 單用戶模式:通常又稱為 s 或 S |
6 | 重啟系統(tǒng) |
除了這些基本的運行級別之外,各個發(fā)行版之間的運行級別使用也有所不同。一個命令使用集合如 表 2 所示。
級別 |
目的 |
2 |
沒有網(wǎng)絡(luò)的多用戶模式 |
3 |
有網(wǎng)絡(luò)的多用戶模式 |
5 |
有網(wǎng)絡(luò)和 X Window System 的多用戶模式 |
Slackware 發(fā)布版使用運行級別 4 而不是 5,因為整個系統(tǒng)正運行 X Window 系統(tǒng)。Debian 及其衍生產(chǎn)品,比如 Ubuntu,對于任何多用戶模式都使用單個運行級別,通常是運行級別 2。務(wù)必查閱您版本的文檔。
默認(rèn)運行級別
當(dāng)一個 Linux 系統(tǒng)啟動時,默認(rèn)運行級別由 /etc/inittab 下的 id: 條目確定。 清單 1 說明了一個系統(tǒng)(比如 Fedora 8 或 openSUSE 11.2)典型條目,這兩個系統(tǒng)都是為 X Window System 使用運行級別 5。
清單 1. /etc/inittab 中的默認(rèn)運行級別
[root@pinguino ~]# grep "^id:" /etc/inittab
id:5:initdefault:
如果您想要您的系統(tǒng)以不同的運行級別啟動,比如說運行級別 3,編輯該值。
改變運行級別
有好幾種方法可以改變運行級別。為了進行一個永久的改變,您可以編輯 /etc/inittab 并改變默認(rèn)運行級別,正如您剛才在上面看到的。
如果您只需要在一次引導(dǎo)中將您的系統(tǒng)提升到一個不同的運行級別,您可以這樣做。例如,假設(shè)您剛剛安裝了一個新內(nèi)核,在使用新內(nèi)核重啟系統(tǒng)后需要建立一些內(nèi)核模塊,但是應(yīng)該在啟動 X Window System 之前。您可能想要將您的運行級別提升為級別 3 來完成這一任務(wù)。您可以通過編輯內(nèi)核線(GRUB)或在選擇的系統(tǒng)名后(LILO)添加一個參數(shù)來在引導(dǎo)時進行這一操作。使用一個一位數(shù)來指出期望的運行級別(在這里是 3)。我們將通過一個 GRUB 實例來介紹具體過程。假設(shè)您的 /boot/grub/menu.lst 文件含有 清單 2 所示的片段。
清單 2. 啟動 Fedora 8 的典型 GRUB 片段
title Fedora (2.6.26.8-57.fc8) root (hd0,5) kernel /boot/vmlinuz-2.6.26.8-57.fc8 ro root=LABEL=FEDORA8 rhgb quiet initrd /boot/initrd-2.6.26.8-57.fc8.img
要想讓系統(tǒng)升級到運行級別 3,等待直至引導(dǎo)項出現(xiàn),選擇這個條目然后輸入 ‘e’ 來編輯這個條目。根據(jù)您的 GRUB 選項,您可能需要按下一個鍵來顯示引導(dǎo)項,然后也輸入一個 ‘p’ 和一個密碼來解鎖編輯。Fedora 8 系統(tǒng)上 GRUB 屏幕看起來像 圖 1 這樣。
圖 1. 在 GRUB 中選擇一個引導(dǎo)選項

在這個示例中,您現(xiàn)在應(yīng)該可以看到以 root、kernel、initrd 開始的行出現(xiàn)。將光標(biāo)移動到以 “kernel” 開始的行,然后輸入 ‘e’ 來編輯這一行。Fedora 8 系統(tǒng)上的 GRUB 屏幕現(xiàn)在如 圖 2 所示。
圖 2. 選擇內(nèi)核項進行編輯

最后將光標(biāo)移動到這一行的末尾,然后添加一個空格和數(shù)字 ‘3’。如果需要的話您可以刪除 ‘quiet’,或者根據(jù)需要修改任何其他參數(shù)。Fedora 8 系統(tǒng)上的 GRUB 屏幕現(xiàn)在如 圖 3 所示。
圖 3. 設(shè)置啟動運行級別為 3

最后,按下 Enter 鍵來保存修改,然后輸入 ‘b’ 來引導(dǎo)系統(tǒng)。
注意: 使用 LILO 或 GRUB2 和使用 GRUB 的步驟有所不同,但是編輯內(nèi)核啟動方法的基本原理是一樣的,即使其他系統(tǒng)或其他版本上的 GRUB 界面和這里所顯示的界面大不相同。提示信息通常會對您有所幫助。
當(dāng)您在運行級別 3 下完成了您的安裝工作時,您可能想要切換到運行級別 5。幸運的是,您不需要重啟系統(tǒng)。您可以使用 telinit 命令來切換到另一個運行級別。使用 runlevel 命令可以顯示之前和目前的運行級別。如果輸出的一個字符是 ‘N’,運行級別還不能改變,因為系統(tǒng)正在被引導(dǎo)。 清單 3 顯示了驗證和更改運行級別。
清單 3. 驗證和更改運行級別
[root@pinguino ~]# runlevel N 3 [root@pinguino ~]# telinit 5
輸入 telinit 5 之后您將看到幾個消息一閃而過,您的界面將切換到已配置的圖形化登錄界面。打開一個終端窗口,然后驗證運行級別是否已經(jīng)修改,如 清單 4 所示。
清單 4.確認(rèn)新的運行級別
[root@pinguino ~]# runlevel 3 5
如果您使用 ls 命令來顯示一個很長的 telinit 命令清單,您將看到它實際上是一個鏈接到 init 命令的符號鏈接。我們將在 清單 5 中對此作一說明。
清單 5. telinit 只是一個鏈接到 init 的符號鏈接
[root@pinguino ~]# ls -l $(which telinit) lrwxrwxrwx 1 root root 4 2008-04-01 07:50 /sbin/telinit -> init
可執(zhí)行文件 init 知道它是否稱為 init 或 telinit,然后進行相應(yīng)調(diào)整。因為 init 作為 PID 1 在引導(dǎo)時運行,它也非常智能,知道您隨后什么時候會使用 init 調(diào)用它,而不是使用 telinit。如果您這樣做了,它就會假設(shè)您希望它表現(xiàn)得像已經(jīng)調(diào)用了 telinit。例如,您可能會使用 init 5 而不是 telinit 5 來切換到運行級別 5。
單用戶模式
相比個人電腦操作系統(tǒng),比如 DOS 或 Windows,Linux 本身是一個多用戶系統(tǒng)。然而,有時候這可能會成為一個問題,比如,當(dāng)您需要恢復(fù)一個重要文件系統(tǒng)或者數(shù)據(jù)庫時,或者安裝和測試某個新軟件時。運行級別 1,單用戶模式 是您在這些情況下的最佳答案。實際實現(xiàn)根據(jù)不同版本有所變化,但是您通常只使用一個很小的系統(tǒng)簡單地啟動。通常這里沒有聯(lián)網(wǎng),沒有(或者非常少)守護進程運行。在一些系統(tǒng)上,您必須通過登錄來進行認(rèn)證,但在其他系統(tǒng)上您可以直接以根用戶開始操作 shell 提示符。單用戶模式可能是一個救生圈,也可能是毀壞您的系統(tǒng),因此,不管任何時候,當(dāng)您使用根用戶權(quán)限時都應(yīng)該小心注意。完成后立即重新啟動到一個正常多用戶模式。
和切換到正常多用戶運行級別一樣,您也可以使用 telinit 1 切換到單用戶模式。正如 表 1 所述,‘s’ 和 ‘S’ 是運行級別 1 的別名,因此您可以使用 telinit s 來代替。#p#
干凈關(guān)閉
您可以使用 telinit 或 init 來停止多用戶活動,然后切換到單用戶模式,這可能有點突然,可能會導(dǎo)致用戶丟失作業(yè)和進程異常終止。關(guān)閉或重啟系統(tǒng)首選方法是使用 shutdown 命令,這首先會向所有登錄的用戶發(fā)送一個警告,并限制進一步登錄,然后發(fā)送 init 信號來切換運行級別。init 進程然后發(fā)送給所有正在運行的進程一個 SIGTERM 信號,給它們保存數(shù)據(jù)的時間或讓他們自己結(jié)束進程。5 秒(如果指定了延遲時間的話,可能是其他延遲時間)后,init 發(fā)送一個 SIGKILL 信號來強制結(jié)束還在運行的進程。
默認(rèn)情況下,shutdown 切換到運行級別 1(單用戶模式)。您可以指定 -h 來暫停系統(tǒng),或者 -r 選項重新啟動。除了您指定的消息外標(biāo)準(zhǔn)消息也被公布。時間可能是指定為絕對時間,以 hh:mm 格式,或者也可能是相對時間,以 n 格式,其中 n 是距關(guān)機的分鐘數(shù)。對于即刻關(guān)機,使用 now,這等價于 +0。
如果您發(fā)布了一個延遲關(guān)機,而時間還沒有到,如果您想取消關(guān)機,如果命令行正在前端運行按 Ctrl-c 鍵,或者通過發(fā)布一個帶有 -c 選項的 shutdown 命令來取消即將進行的關(guān)機。 清單 6 顯示了幾個使用 shutdown 命令的示例,以及撤銷這一命令的方法。
清單 6. 關(guān)機示例
[root@pinguino ~]# shutdown 5 File system recovery needed Broadcast message from root (pts/1) (Tue Jan 4 08:05:24 2011): File system recovery needed The system is going DOWN to maintenance mode in 5 minutes! ^C Shutdown cancelled. [root@pinguino ~]# shutdown -r 10 Reloading updated kernel& [1] 18784 [root@pinguino ~]# Broadcast message from root (pts/1) (Tue Jan 4 08:05:53 2011): Reloading updated kernel The system is going DOWN for reboot in 10 minutes! [root@pinguino ~]# fg shutdown -r 10 Reloading updated kernel ^C Shutdown cancelled. [root@pinguino ~]# shutdown -h 23:59& [1] 18788 [root@pinguino ~]# shutdown -c Shutdown cancelled. [1]+ Done shutdown -h 23:59
您可以已經(jīng)注意到了,我們最后一個例子沒有發(fā)送一個警告消息。如果關(guān)機時間超過了 15 分鐘,這個消息將不被發(fā)送,直到 清單 7 所示活動前 15 分鐘。 清單 7 也顯示了 -t 選項的使用,將 SIGTERM 和 SIGKILL 信號間的默認(rèn)延遲增加 5 秒到 60 秒。
清單 7. 另一個關(guān)機示例
[root@pinguino ~]# date;shutdown -t60 17 Time to do backups& Tue Jan 4 08:12:55 EST 2011 [1] 18825 [root@pinguino ~]# date Tue Jan 4 08:14:13 EST 2011 [root@pinguino ~]# Broadcast message from root (pts/1) (Tue Jan 4 08:14:55 2011): Time to do backups The system is going DOWN to maintenance mode in 15 minutes!
如果您取消了一次關(guān)機,您可以使用 wall 命令來向所有用戶發(fā)送一個警告,通知他們實際上系統(tǒng)不會即將關(guān)閉。
正如我們之前所介紹的,也可以使用 telinit(或 init)來關(guān)閉或重啟系統(tǒng)。和 telinit 的其他用法一樣,不向用戶發(fā)送警告消息,命令立即生效,盡管在 SIGTERM 和 SIGKILL 信號之間仍然有延遲。對于 telinit、init 和 shutdown 的其他選項,請查閱手冊頁。
Halt、reboot 和 poweroff 命令
您已經(jīng)知道了一些關(guān)于關(guān)機和重新啟動的命令。
•halt 命令暫停系統(tǒng)。
•poweroff 命令是一個鏈接到 halt 命令的符號鏈接,暫停系統(tǒng)然后試圖關(guān)掉電源。
•reboot 命令是另一個連接到 halt 命令的符號鏈接,暫停系統(tǒng)然后重新啟動。
當(dāng)系統(tǒng)的運行級別不是 0 或 6 時,如果調(diào)用這些命令其中之一,相應(yīng)的 shutdown 命令將被代替調(diào)用。
對于這些命令的其他選項,以及關(guān)于其操作的詳細(xì)信息,請參閱手冊頁。
/etc/inittab
到目前為止,您可能想知道,為什么在有些系統(tǒng)上需要按 Ctrl-Alt-Delete 鍵來重新啟動,或者這個運行級別設(shè)置是如何配置的。記得 /etc/inittab 中的 id 字段嗎?當(dāng)然,/etc/inittab 中還有其他字段,而且其中的一些目錄下(比如 rc1.d 或 rc5.d )還有一系列 init 腳本,其中數(shù)字就是在那個目錄下腳本所應(yīng)用的運行級別。 清單 8 顯示了我們的 Fedora 8 系統(tǒng)上一個完整的 inittab。
清單 8. Fedora 8 上的完整 inittab
# # inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author: Miquel van Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes # # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now # When our UPS tells us power has failed, assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 # Run xdm in runlevel 5 x:5:respawn:/etc/X11/prefdm -nodaemon
和往常一樣,以 # 開始的是注釋,其他行有幾個以如下格式表示的字段:
id:runlevels:action:process
id
是一個惟一標(biāo)識符,由 1~4 個字符構(gòu)成。舊版本限制為 2 個字符,因為您通常會看到只使用 2 個字符。
runlevels
列出針對該 id 的活動應(yīng)該操作的運行級別。如果沒有列出任何運行級別,在所有運行級別下執(zhí)行這一操作。
action
描述幾個可能執(zhí)行的操作
process
當(dāng)操作在這個線路上被執(zhí)行時,告知哪個進程應(yīng)該運行,如果有的話。
在 /etc/inittab 中可能指定的一些常見操作,如 表 3 所示。關(guān)于 inittab 的其他可能性見手冊頁。
操作 |
目的 |
respawn |
在進程終止時重啟進程。通常用于 getty 進程,該進程用于監(jiān)控登錄。 |
wait |
當(dāng)特定運行級別輸入后立即啟動進程,等待終止直至 init 開始運行。 |
once |
當(dāng)特定運行級別輸入后立即啟動進程。 |
initdefault |
指定系統(tǒng)引導(dǎo)之后要輸入的運行級別。 |
ctrlaltdel |
當(dāng) init 接收到 SIGINT 信號后執(zhí)行相關(guān)進程,比如,有人在系統(tǒng)控制臺上按了 CTRL-ALT-DEL。 |
清單 9 只顯示了 清單 8 中針對 Ctrl-Alt-Delete 的條目?,F(xiàn)在,您明白了為什么按 Ctrl-Alt-Delete 鍵會導(dǎo)致系統(tǒng)重新啟動。
清單 9.捕獲 Ctrl-Alt-Delete
# Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now
初始化腳本
您可能會注意到 清單 8 中的這幾行,比如
l5:5:wait:/etc/rc.d/rc 5
在本例中,不管輸入的運行級別是不是 5,init 將使用參數(shù) 5 運行 /etc/rc.d/rc 腳本(或命令)。init 將等待直至該命令完成,然后再執(zhí)行其他操作。
啟動系統(tǒng)、修改運行級別或關(guān)機時 init 使用的那些腳本通常存儲在 /etc/init.d 或 /etc/rc.d 目錄下。rcn.d 目錄下的一系列符號鏈接,每個運行級別 n 有一個目錄,控制當(dāng)輸入一個運行級別時腳本是否啟動,或當(dāng)離開時腳本是否停止。這些鏈接以一個 K 或一個 S 開頭,緊接著是一個 2 位數(shù)的數(shù)字,然后是服務(wù)名,如 清單 10 所示。
清單 10. Init 腳本
[root@pinguino ~]# find /etc -path "*rc[0-9]*.d/???au*" /etc/rc.d/rc2.d/S27auditd /etc/rc.d/rc2.d/K72autofs /etc/rc.d/rc4.d/S27auditd /etc/rc.d/rc4.d/S28autofs /etc/rc.d/rc5.d/S27auditd /etc/rc.d/rc5.d/S28autofs /etc/rc.d/rc0.d/K72autofs /etc/rc.d/rc0.d/K73auditd /etc/rc.d/rc6.d/K72autofs /etc/rc.d/rc6.d/K73auditd /etc/rc.d/rc1.d/K72autofs /etc/rc.d/rc1.d/K73auditd /etc/rc.d/rc3.d/S27auditd /etc/rc.d/rc3.d/S28autofs [root@pinguino ~]# cd /etc/rc.d/rc5.d [root@pinguino rc5.d]# ls -l ???a* lrwxrwxrwx 1 root root 16 2008-04-07 11:29 S27auditd -> ../init.d/auditd lrwxrwxrwx 1 root root 16 2008-04-01 07:51 S28autofs -> ../init.d/autofs lrwxrwxrwx 1 root root 15 2008-04-01 14:03 S44acpid -> ../init.d/acpid lrwxrwxrwx 1 root root 13 2008-04-01 07:50 S95atd -> ../init.d/atd lrwxrwxrwx 1 root root 22 2008-04-01 07:54 S96avahi-daemon -> ../init.d/avahi-daemon lrwxrwxrwx 1 root root 17 2008-11-17 13:40 S99anacron -> ../init.d/anacron
您可以看到在所有運行級別下 audit 和 autofs 服務(wù)有 Knn 個條目,運行級別 3 和 5 下有 Snn 個條目。S 表示當(dāng)輸入運行級別時服務(wù)已啟動,而 K 表示服務(wù)應(yīng)該停止。鏈接名稱的 nn 部分表示服務(wù)啟動或暫停的優(yōu)先級別。在該示例中,audit 在 autofs 之前啟動,且在其后停止。
參閱手冊頁,了解關(guān)于 init 和 inittab 的更多信息。
Init vs. Upstart
正如我們所看到的,傳統(tǒng)的引導(dǎo) Linux 系統(tǒng)方法是基于 UNIX System V init 進程的。它涉及到加載一個初始 RAM 磁盤(initrd),然后將控件傳給一個名為 init 的程序,通常作為 sysvinit 包的一部分安裝的一個程序。init 程序然后以預(yù)先定義的順序運行一系列腳本來啟動系統(tǒng)。如果預(yù)期的一些信息不可用,init 進程會等待直至可用。而這對于在系統(tǒng)啟動時一切都是已知且連接的系統(tǒng)來說很適合,帶熱插拔設(shè)備的系統(tǒng)、網(wǎng)絡(luò)文件系統(tǒng)、甚至在啟動時不能使用的網(wǎng)絡(luò)接口都面臨著新的挑戰(zhàn)。的確,等待可能很長時間內(nèi)都不可用的硬件,或者就算是相對較長的時間,都不是很理想。
另一個初始化進程 upstart 是在 2006 年 Ubuntu 6.10 ("Edgy Eft") 中第一次引入。目前在 Ubuntu 和 Fedora,還有其他系統(tǒng)中已經(jīng)取代了 init 進程,盡管依然有 init 的痕跡,upstart 的強大功能在一段時間內(nèi)可能還沒有被意識到。
相比早期系統(tǒng)中所用的 init 腳本的靜態(tài)集合,upstart 系統(tǒng)是事件 驅(qū)動的,事件可能被硬件改動觸發(fā),也可被啟動或關(guān)機或任務(wù)所觸發(fā),或者也可能被系統(tǒng)上的任何其他進程所觸發(fā)。事件用于觸發(fā)任務(wù) 或服務(wù),統(tǒng)稱為作業(yè)。因此,比如連接到一個 USB 驅(qū)動器可能導(dǎo)致 udev 服務(wù)發(fā)送一個 block-device-added 事件,這可能引起一個預(yù)定任務(wù)檢查 /etc/fstab 和掛載驅(qū)動器(如果需要的話)。再如,一個 Apache web 服務(wù)器可能只有當(dāng)網(wǎng)絡(luò)和所需的文件系統(tǒng)都可用時才能啟動。
upstart 初始化程序代替了 /sbin/init。Upstart 作業(yè)在 /etc/init 目錄及其子目錄下被定義。upstart 系統(tǒng)目前將處理 /etc/inittab 和 System V init 腳本。在諸如近來的 Fedora 版本的系統(tǒng)上,/etc/inittab 可能只含有 initdefault 操作的 id 項。目前 Ubuntu 系統(tǒng)默認(rèn)沒有 /etc/inittab,如果您想要指定一個默認(rèn)運行級別的話,您可以創(chuàng)建一個。
Upstart 也使用 initctl 命令來支持與 upstart init 守護進程的交互。這時您可以啟動或終止作業(yè)、列表作業(yè)、以及獲取作業(yè)的狀態(tài)、發(fā)出事件、重啟 init 進程,等等。 清單 11 顯示了如何使用 initctl 來獲取 Fedora 13 系統(tǒng)上的一個 upstart 作業(yè)列表。
清單 11.使用 initctl 與 upstart init 守護進程交互
[ian@echidna ~]$ initctl list rc stop/waiting tty (/dev/tty3) start/running, process 1486 tty (/dev/tty2) start/running, process 1484 tty (/dev/tty6) start/running, process 1492 tty (/dev/tty5) start/running, process 1490 tty (/dev/tty4) start/running, process 1488 plymouth-shutdown stop/waiting control-alt-delete stop/waiting system-setup-keyboard start/running, process 1000 readahead-collector stop/waiting vpnc-cleanup stop/waiting quit-plymouth stop/waiting rcS stop/waiting prefdm start/running, process 1479 init-system-dbus stop/waiting ck-log-system-restart stop/waiting readahead stop/waiting ck-log-system-start stop/waiting start-ttys stop/waiting readahead-disable-services stop/waiting ck-log-system-stop stop/waiting rcS-sulogin stop/waiting serial stop/waiting
原文鏈接:http://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-101-3/index.html?ca=drs
【編輯推薦】