solaris10執行級別和開關機控制

xiaoli發表於2009-06-28

1.init說明

init程式是系統中所有程式的父程式,init程式繁衍出完成通常操作所需的子程式,這些操作包括:設定機器名、檢查和安裝磁碟及檔案系統、啟動系統日誌、配置網路介面並啟動網路和郵件服務,啟動列印服務等。

  系統有多種執行級別,不同的執行級別所啟動的服務不同。系統執行級別有8種,分別為:init [0123456Ss]

init 0 : console access,即OK狀態,可以做硬體維護,可以關機


init 1: sigle user,系統的管理狀態,只允許root登陸,

init 2 : 多使用者狀態(NFS受限的)

init 3 : 多使用者狀態(NFS開放的)

init 4 : 未定義

init 5 : power down 狀態,console access 自動關閉電源


init 6 : halted and reboot

init S : administractiv tasks and repair of conrrupted file system ,console access

/etc下面有 rc0.d rc1.d rc2.d rc3.d rcS.d幾個資料夾,分別存放不同執行級別的啟動指令碼。

[@more@]

2.inittab說明

/etc/inittab定義了系統預設執行級別,系統進入新執行級別需要做什麼。Solaris中init程式的主要任務是按照 inittab檔案所提供的資訊建立程式,由於進行系統初始化的那些程式都由init建立,所以init程式也稱為系統初始化程式。

inittab檔案的格式:inittab檔案中每一記錄都從新的一行開始,每個記錄項最多可有512個字元,每一項的格式通常如下:id:rstate:action:process,下面分別解釋。其中id欄位是最多4個字元的字串,用來唯一標誌表項。

  rstate(run state)欄位定義該記錄項被呼叫時的執行級別,rstate可以由一個或多個執行級別構成,也可以是空,空則代表執行級別0~6。當請求init改變 執行級別時,那些rstate欄位中不包括新執行級別的程式將收到SIGTERM警告訊號,並且最後被殺死;只有a、b、c啟動的命令外(a、b、c不是 真正的執行級別)。

  action欄位告訴init執行的動作,即如何處理process欄位指定的程式,action欄位允許的值及對應的動作分別為:

  1)respawn:如果process欄位指定的程式不存在,則啟動該程式,init不等待處理結束,而是繼續掃描inittab檔案中的後續程式,當這樣的程式終止時,init會重新啟動它,如果這樣的程式已存在,則什麼也不做。 軟體開發網

  2)wait:啟動process欄位指定的程式,並等到處理結束才去處理inittab中的下一記錄項。

軟體開發網

  3)once:啟動process欄位指定的程式,不等待處理結束就去處理下一記錄項。當這樣的程式終止時,也不再重新啟動它,在進入新的執行級別時,如果這樣的程式仍在執行,init也不重新啟動它。

  4)boot:只有在系統啟動時,init才處理這樣的記錄項,啟動相應程式,並不等待處理結束就去處理下一個記錄項。當這樣的程式終止時,系統也不重啟它。

  5)bootwait:系統啟動後,當第一次從單使用者模式進入多使用者模式時處理這樣的記錄項,init啟動這樣的程式,並且等待它的處理結束,然後再進行下一個記錄項的處理,當這樣的程式終止時,系統也不重啟它。

  6)powerfail:當init接到斷電的訊號(SIGPWR)時,處理指定的程式。

  7)powerwait:當init接到斷電的訊號(SIGPWR)時,處理指定的程式,並且等到處理結束才去檢查其他的記錄項。

  8)off:如果指定的程式正在執行,init就給它發SIGTERM警告訊號,在向它發出訊號SIGKILL強制其結束之前等待5秒,如果這樣的程式不存在,則忽略這一項。

  9)ondemand:功能通respawn,不同的是,與具體的執行級別無關,只用於rstate欄位是a、b、c的那些記錄項。

  10)sysinit:指定的程式在訪問控制檯之前執行,這樣的記錄項僅用於對某些裝置的初始化,目的是為了使init在這樣的裝置上向使用者提問有關執行級別的問題,init需要等待程式執行結束後才繼續。

  11)initdefault:指定一個預設的執行級別,只有當init一開始被呼叫時才掃描這一項,如果rstate欄位指定了多個執行級 別,其中最大的數字是預設的執行級別,如果rstate欄位是空的,init認為欄位是0123456,於是進入級別6,這樣便陷入了一個迴圈,如果 inittab檔案中沒有包含initdefault的記錄項,則在系統啟動時請求使用者為它指定一個初始執行級別。

  Process欄位中程式可以是任意的守候程式、可執行指令碼或程式。另外,在任何時候,可以在檔案inittab中新增新的記錄項,級別Q/q 不改變當前的執行級別,重新檢查inittab檔案,可以透過命令init Q或init q使init程式立即重新讀取並處理檔案inittab。

3.關機命令。

shutdown:

-i 加執行級別,default=S。使系統進入到與預設級別 S 不同的 init 級別。選項包括 0、1、2、5 和 6。執行級 0 和 5 是為關閉系統而保留的狀態。執行級 6 用於重新引導系統。執行級 2 可用作多使用者操作狀態。

-g 加時間引數,default=60'

-y

如:

#shutdown -g180 -y 三分鐘後進入S級別,單使用者模式

# shutdown -i0 -g120 -y 兩分鐘後關機

#shutdown -i6 -y 1分鐘後重啟

who -r 檢視當前執行級別,以及上一個執行級別!

例如:

run-level 3 Jun 28 13:17 3 0 s

poweroff 關閉系統並切斷電源

reboot 重啟系統

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/60144/viewspace-1023576/,如需轉載,請註明出處,否則將追究法律責任。

相關文章