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可以重啟。