Linux下常用的關機/重啟命令一般包括:
shutdown、reboot、halt、poweroff等,當然了我們可以使用init 運行等級runlevel 0即halt來關機,或使用init 運行等級runlevel 6即reboot來執行重啟。
當然了這些關機或重啟的方式也有一些細微差別。
首先明確一下linux/redhat系的runlevel運行級別和debian系的runlevel是有所不同的。
redhat系的runlevel定義如下:
runlevel 0: halt 系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動
runlevel 1: single user 單用戶工作狀態,root權限,用於系統維護,禁止遠程登陸
runlevel 2: multiuser without network 多用戶狀態(沒有NFS)
runlevel3: multiuser 完全的多用戶狀態(有NFS),登陸后進入控制台命令行模式
runlevel4: unuse 系統未使用,保留
runlevel5: x11 X11控制台,登陸后進入圖形GUI模式
runlevel6: reboot 系統正常關閉並重啟,默認運行級別不能設為6,否則不能正常啟動
在debian/ubuntu中,runlevel的定義為:
0 - Halt
1 - Single
2 - Full multi-user with display manager (GUI)
3 - Full multi-user with display manager (GUI)
4 - Full multi-user with display manager (GUI)
5 - Full multi-user with display manager (GUI)
6 - Reboot
可以發現2~5級是沒有任何區別的。
Ubuntu系統默認的運行級別為2。
因此,我們可以使用init 0來執行halt關機,使用init 6來執行reboot。
其實shutdown命令也是在執行完一系列操作后,比如說逐個關閉進程/服務,調用sync將數據寫入磁盤等,然后調用init0或init6來執行關機或重啟的。
而halt實際上是調用shutdown -h now,可以不理會系統當前狀態而直接關機,但在有的系統中,halt不會關閉電源,而只關閉了os。