halt poweroff reboot問(wèn)題
這里轉帖一篇文章,我覺(jué)得這篇文章寫(xiě)得很清楚了,希望你以后多多用google
Linux關(guān)機命令詳解
本文出自:LinuxAid.com.cn 作者: sword_martin (2002-01-30 21:03:06)
在linux下一些常用的關(guān)機/重啟命令有shutdown、halt、reboot、及init,它們都
可以達到重啟系統的目的,但每個(gè)命令的內部工作過(guò)程是不同的,通過(guò)本文的介紹,希
望你可以更加靈活的運用各種關(guān)機命令。
1.shutdown
shutdown命令安全地將系統關(guān)機。 有些用戶(hù)會(huì )使用直接斷掉電源的方式來(lái)關(guān)閉linux,
這是十分危險的。因為linux與windows不同,其后臺運行著(zhù)許多進(jìn)程,所以強制關(guān)機可能
會(huì )導致進(jìn)程的數據丟失﹐使系統處于不穩定的狀態(tài)﹐甚至在有的系統中會(huì )損壞硬件設備。
而在系統關(guān)機前使用shutdown命令﹐系統管理員會(huì )通知所有登錄的用戶(hù)系統將要關(guān)閉。
并且login指令會(huì )被凍結﹐即新的用戶(hù)不能再登錄。直接關(guān)機或者延遲一定的時(shí)間才關(guān)機
都是可能的﹐還可能重啟。這是由所有進(jìn)程〔process〕都會(huì )收到系統所送達的信號〔signal〕
決定的。這讓像vi之類(lèi)的程序有時(shí)間儲存目前正在編輯的文檔﹐而像處理郵件〔mail〕和
新聞〔news〕的程序則可以正常地離開(kāi)等等。
shutdown執行它的工作是送信號〔signal〕給init程序﹐要求它改變r(jià)unlevel。
Runlevel 0被用來(lái)停機〔halt〕﹐runlevel 6是用來(lái)重新激活〔reboot〕系統﹐
而runlevel 1則是被用來(lái)讓系統進(jìn)入管理工作可以進(jìn)行的狀態(tài)﹔這是預設的﹐假定沒(méi)有-h也
沒(méi)有-r參數給shutdown。要想了解在停機〔halt〕或者重新開(kāi)機〔reboot〕過(guò)程中做了哪些
動(dòng)作﹐你可以在這個(gè)文件/etc/inittab里看到這些runlevels相關(guān)的資料。
shutdown 參數說(shuō)明:
[-t] 在改變到其它runlevel之前﹐告訴init多久以后關(guān)機。
[-r] 重啟計算器。
[-k] 并不真正關(guān)機﹐只是送警告信號給每位登錄者〔login〕。
[-h] 關(guān)機后關(guān)閉電源〔halt〕。
[-n] 不用init﹐而是自己來(lái)關(guān)機。不鼓勵使用這個(gè)選項﹐而且該選項所產(chǎn)生的后果往
往不總是你所預期得到的。
[-c] cancel current process取消目前正在執行的關(guān)機程序。所以這個(gè)選項當然沒(méi)有
時(shí)間參數﹐但是可以輸入一個(gè)用來(lái)解釋的訊息﹐而這信息將會(huì )送到每位使用者。
[-f] 在重啟計算器〔reboot〕時(shí)忽略fsck。
[-F] 在重啟計算器〔reboot〕時(shí)強迫f(wàn)sck。
[-time] 設定關(guān)機〔shutdown〕前的時(shí)間。
2.halt----最簡(jiǎn)單的關(guān)機命令
其實(shí)halt就是調用shutdown -h。halt執行時(shí)﹐殺死應用進(jìn)程﹐執行sync系統調用﹐
文件系統寫(xiě)操作完成后就會(huì )停止內核。
參數說(shuō)明:
[-n] 防止sync系統調用﹐它用在用fsck修補根分區之后﹐以阻止內核用老版本的超
級塊〔superblock〕覆蓋修補過(guò)的超級塊。
[-w] 并不是真正的重啟或關(guān)機﹐只是寫(xiě)wtmp〔/var/log/wtmp〕紀錄。
[-d] 不寫(xiě)wtmp紀錄〔已包含在選項[-n]中〕。
[-f] 沒(méi)有調用shutdown而強制關(guān)機或重啟。
[-i] 關(guān)機〔或重啟〕前﹐關(guān)掉所有的網(wǎng)絡(luò )接口。
[-p] 該選項為缺省選項。就是關(guān)機時(shí)調用poweroff。
3.reboot
reboot的工作過(guò)程差不多跟halt一樣﹐不過(guò)它是引發(fā)主機重啟﹐而halt是關(guān)機。它
的參數與halt相差不多。
4.init
init是所有進(jìn)程的祖先﹐它的進(jìn)程號始終為1﹐所以發(fā)送TERM信號給init會(huì )終止所有的
用戶(hù)進(jìn)程﹑守護進(jìn)程等。shutdown 就是使用這種機制。init定義了8個(gè)運行級別(runlevel),
init 0為關(guān)機﹐init 1為重啟。關(guān)于init可以長(cháng)篇大論﹐這里就不再敘述。另外還有
telinit命令可以改變init的運行級別﹐比如﹐telinit -iS可使系統進(jìn)入單用戶(hù)模式﹐
并且得不到使用shutdown時(shí)的信息和等待時(shí)間。
評論