淺析Linux 5種關機命令
㈠ shutdown
www.2cto.com
shutdown 參數說明:
[plain]
[-t] 在改變到其它runlevel之前﹐告訴init多久以後關機
[-r] 重啟計算機
[-k] 並不真正關機﹐只是送警告信號給每位登錄者〔login〕
[-h] 關機後關閉電源〔halt〕
[-n] 不用init﹐而是自己來關機。不鼓勵使用這個選項﹐而且該選項所產生的後果往往不總是你所預期得到的 www.2cto.com
[-c] cancel current process取消目前正在執行的關機程序。所以這個選項當然沒有時間參數﹐但是可以輸入一個用來解釋的訊息﹐而這信息將會送到每位使用者
[-f] 在重啟計算機〔reboot〕時忽略fsck
[-F] 在重啟計算機〔reboot〕時強迫fsck
[-time] 設定關機〔shutdown〕前的時間
例子:
[plain]
shutdown now # 立即關機
shutdown +2 # 2 min 後關機
shutdown 10:01 # 10:01關機
shutdown +2 "The machine will shutdown" # 2min 後關機,並通知在線者
shutdown -h now 立刻關機,其中now相當於時間為0,halt,poweroff也可以關機,或者直接init 0
shutdown -h 20:30 系統將在今晚的8:30關機
shutdown -h +10 系統再過十分鐘後自動關機.
shutdown -t3 -r now 立刻重新開機,但在警告和刪除processes這間,
shutdown -k now 'Hey! Go away! now...' 發出警告信息,但沒有真的關機.
在系統關機前使用shutdown命令﹐系統管理員會通知所有登錄的用戶系統將要關閉
並且login指令會被凍結﹐即新的用戶不能再登錄
直接關機或者延遲一定的時間才關機都是可能的﹐還可能重啟
這是由所有進程〔process〕都會收到系統所送達的信號〔signal〕決定的、比如vim、留時間儲存目前正在編輯的文檔
shutdown執行原理是發送信號〔signal〕給init程序﹐要求它改變runlevel
● run level 0: 關機
● run level 1:單用戶模式,只允許root用戶對系統進行維護
● run level 2:多用戶模式,但不能使用NFS(相當於Windows下的網上鄰居)
● run level 3: 文本模式
● run level 4:未定義
● run level 5:X window
● run level 6: 重新啟動
我的習慣是:shutdown -Fh now
[plain]
[root@Think ~]# who -r
run-level 5 2013-03-07 15:13 last=S
[root@Think ~]# runlevel
N 5
㈡ halt
halt 參數說明:
[plain]
[-n] 防止sync系統調用﹐它用在用fsck修補根分區之後﹐以阻止內核用老版本的超級塊〔superblock〕覆蓋修補過的超級塊
[-w] 並不是真正的重啟或關機﹐只是寫wtmp〔/var/log/wtmp〕紀錄
[-d] 不寫wtmp紀錄〔已包含在選項[-n]中〕
[-f] 沒有調用shutdown而強制關機或重啟
[-i] 關機〔或重啟〕前﹐關掉所有的網絡接口
[-p] 該選項為缺省選項。就是關機時調用power off
有些版本的halt就是關機後不斷電的、比如:
其實、這個時候已經關機了,只是沒關閉電源,需要手動關一下電源
halt就是調用shutdown -h。halt執行時﹐殺死應用進程﹐執行sync﹐文件系統寫操作完成後就會停止內核
㈢ reboot
reboot的工作過程差不多跟halt一樣﹐不過它是引發主機重啟﹐而halt是關機
㈣ init
init是所有進程的祖先﹐它的進程號始終為1﹐所以發送TERM信號給init會終止所有的用戶進程﹑守護進程等、比如shutdown
init命令使用上面runlevel
㈤ poweroff
指向halt的軟鏈接