shutdown
shutdown命令安全地將系統(tǒng)關(guān)機。 有些用戶會使用直接斷掉電源的方式來關(guān)閉linux,這是十分危險的。因為linux與windows不同,其后臺運行著許多進程,所以強制關(guān)機可能會導致進程的數(shù)據(jù)丟失﹐使系統(tǒng)處于不穩(wěn)定的狀態(tài)﹐甚至在有的系統(tǒng)中會損壞硬件設(shè)備。而在系統(tǒng)關(guān)機前使用shutdown命令﹐系統(tǒng)管理員會通知所有登錄的用戶系統(tǒng)將要關(guān)閉。并且login指令會被凍結(jié)﹐即新的用戶不能再登錄。直接關(guān)機或者延遲一定的時間才關(guān)機都是可能的﹐還可能重啟。這是由所有進程〔process〕都會收到系統(tǒng)所送達的信號〔signal〕決定的。這讓像vi之類的程序有時間儲存目前正在編輯的文檔﹐而像處理郵件〔mail〕和新聞〔news〕的程序則可以正常地離開等等。
shutdown執(zhí)行它的工作是送信號〔signal〕給init程序﹐要求它改變runlevel。Runlevel 0被用來停機〔halt〕﹐runlevel 6是用來重新激活〔reboot〕系統(tǒng)﹐而runlevel 1則是被用來讓系統(tǒng)進入管理工作可以進行的狀態(tài)﹔這是預設(shè)的﹐假定沒有-h也沒有-r參數(shù)給shutdown。要想了解在停機〔halt〕或者重新開機〔reboot〕過程中做了哪些動作﹐你可以在這個文件/etc/inittab里看到這些runlevels相關(guān)的資料。
halt
其實halt就是調(diào)用shutdown -h。halt執(zhí)行時﹐殺死應(yīng)用進程﹐執(zhí)行sync系統(tǒng)調(diào)用﹐文件系統(tǒng)寫操作完成后就會停止內(nèi)核。
reboot
reboot的工作過程差不多跟halt一樣﹐不過它是引發(fā)主機重啟﹐而halt是關(guān)機。它 的參數(shù)與halt相差不多。
init
nit是所有進程的祖先﹐它的進程號始終為1﹐所以發(fā)送TERM信號給init會終止所有的 用戶進程﹑守護進程等。shutdown 就是使用這種機制。init定義了8個運行級別(runlevel), init 0為關(guān)機﹐init 1為重啟。