1、 sync
sync:flush file system buffers。
sync命令作用:刷新文件系統的緩存,將數據同步寫入硬盤。
執行sync命令的必要性:在計算機中,CPU所處理的數據首先要被讀入內存中,而這些數據又經常要寫回到硬盤上,但是硬盤的速度相對於內存來說太慢,如果數據頻繁在內存與硬盤間交換,系統性能將大打折扣,所以為了加快數據的讀取速度,默認情況下,某些已經加載在內存中的數據將不會直接被寫回硬盤,而是先暫存在內存當中,這時如果關機或重啟電腦,暫存在內存中的數據將可能丟失,正確的做法是先執行sync命令,多執行幾次也無妨,以保證數據寫入硬盤,事實上一些關機命令默認也執行了sync操作。
2、 shutdown
shutdown命令用於安全關閉Linux系統。有些用戶會使用直接斷掉電源的方式來關閉Linux,這是十分危險的。因為Linux與Windows不同,其後台運行著許多進程,所以強制關機可能會導致進程的數據丟失,使系統處於不穩定的狀態,甚至會損壞硬件設備。
執行shutdown命令時,系統會通知所有登錄的用戶系統將要關閉,並且login指令會被凍結,即新的用戶不能再登錄系統。使用shutdown命令可以直接關閉系統,也可以延遲指定的時間再關閉系統,還可以重新啟動。延遲指定的時間再關閉系統,可以讓用戶有時間儲存當前正在處理的文件和關閉已經打開的程序。
shutdown:bring the system down。
語法格式如下:
代碼如下:
shutdown [OPTIONS]… TIME [MESSAGE]
幾個參數——
-k:不是真的關機,而是發送警告信息,此時不再允許登錄。
-c:取消已經在進行的shutdown指令,此時TIME參數不必選擇,MESSAGE為第一個參數,這個參數可選。
-r:將系統服務停掉之後reboot。
-h:將系統服務停掉之後halt或者powweroff。
-H:將系統服務關掉之後halt。
-P:將系統服務關掉之後poweroff。
注意:shutdown命令的TIME是必選參數,有多種格式,now表示立刻執行等同於參數為0的情況,形如20:20表示命令執行的具體時間,形如20表示20分鐘後執行命令。
shutdown命令的工作實質是給init程序發送信號(signal),要求其切換系統的運行級別(Runlevel)。系統的運行級別包括:
0:關閉系統
1:單用戶模式,如果沒有為shutdown命令指定-h或-r參數而直接執行,則默認將切換到此運行級別
2:多用戶模式(不支持NFS)
3:多用戶模式(支持NFS),一般常用此種運行級別
5:多用戶模式(GUI模式)
6:重新啟動系統
3、 reboot、halt、poweroff
語法格式如下:
reboot [OPTIONS]… [REBOOTCOMMAND]
halt [OPTIONS]…
poweroff [OPTIONS]…
幾個參數——
-f:同上面的描述,不會調用shutdown(8)。
-p:指定為halt命令,效果同poweroff一樣。
-w:不調用shutdown(8)和reboot(2),只是把shutdown時間記錄寫入/var/log/wtmp中。
–verbose:輸出詳細的命令執行信息。
reboot(8)、halt(8)、poweroff(8):reboot or stop the system,這三個命令類似,查找man時,它們在同一個page8。當執行命令時使用了參數“-f”或者處於0~6的runlevel時,將會激活系統調用reboot(2) (REBOOTCOMMAND參數會傳過去)並直接重啟系統,否則調用的是shutdown(8),此時REBOOTCOMMAND參數不會傳過去。在調用reboot(2)之前,shutdown時間記錄會首先寫入/var/log/wtmp中。
halt 關機命令
halt是最簡單的關機命令,其實際上是調用shutdown -h命令。halt執行時,殺死應用進程,文件系統寫操作完成後就會停止內核。
halt命令的部分參數如下:
[-f] 沒有調用shutdown而強制關機或重啟
[-i] 關機或重新啟動之前,關掉所有的網絡接口
[-p] 關機時調用poweroff,此選項為缺省選項
reboot linux重啟命令
reboot的工作過程與halt類似,其作用是重新啟動,而halt是關機。其參數也與halt類似。
poweroff
部分泛UNIX/LINUX系統才支持,紅旗LINUX亦適用。
4、 init
init是所有進程的祖先,其進程號始終為1。init用於切換系統的運行級別,切換的工作是立即完成的。init 0命令用於立即將系統運行級別切換為0,即關機;init 6命令用於將系統運行級別切換為6,即重新啟動。
Linux的執行等級共有七種,即run level從0到6,其中run level 0表示關機,run level 6表示重啟,切換run level的命令是init,如下:
代碼如下:
$ init 0
$ init 6
init 0可以關機,init 6可以重啟。