Linux开关机命令:shutdown,reboot,halt,init之间的区别
在linux下一些常用的關機/重啟命令。
1.shutdown
??? shutdown命令安全地將系統關機。
??? 有些用戶會使用直接斷掉電源的方式來關閉linux,這是十分危險的。因為linux與windows不同,其后臺運行著許多進程,所以強制關機可能會導致進程的數據丟失﹐使系統處于不穩定的狀態﹐甚至在有的系統中會損壞硬件設備。而在系統關機前使用shutdown命令﹐系統管理員會通知所有登錄的用戶系統將要關閉。并且login指令會被凍結﹐即新的用戶不能再登錄。直接關機或者延遲一定的時間才關機都是可能的﹐還可能重啟。這是由所有進程〔process〕都會收到系統所送達的信號〔signal〕決定的。這讓像vi之類的程序有時間儲存目前正在編輯的文檔﹐而像處理郵件〔mail〕和新聞〔news〕的程序則可以正常地離開等等。
???? shutdown執行它的工作是送信號〔signal〕給init程序﹐要求它改變runlevel。Runlevel 0被用來停機〔halt〕﹐runlevel 6是用來重新激活〔reboot〕系統﹐而runlevel 1則是被用來讓系統進入管理工作可以進行的狀態﹔這是預設的﹐假定沒有-h也沒有-r參數給shutdown。要想了解在停機〔halt〕或者重新開機〔reboot〕過程中做了哪些動作﹐你可以在這個文件/etc/inittab里看到這些runlevels相關的資料。
shutdown 參數說明:
??? [-t] 在改變到其它runlevel之前﹐告訴init多久以后關機。
??? [-r] 重啟計算器。
??? [-k] 并不真正關機﹐只是送警告信號給每位登錄者〔login〕。
??? [-h] 關機后關閉電源〔halt〕。
??? [-n] 不用init﹐而是自己來關機。不鼓勵使用這個選項﹐而且該選項所產生的后果往往不總是你所預期得到的。
??? [-c] cancel current process取消目前正在執行的關機程序。所以這個選項當然沒有時間參數﹐但是可以輸入一個用來解釋的訊息﹐而這信息將會送到每位使用者。
??? [-f] 在重啟計算器〔reboot〕時忽略fsck。
??? [-F] 在重啟計算器〔reboot〕時強迫fsck。
??? [-time] 設定關機〔shutdown〕前的時間。
??? 例如:
???????? /sbin/shutdown -h now-----立即關機;
/sbin/shutdown -h 20:49----20:49分關機
/sbin/shutdown -h +10-----10分鐘后關機
/sbin/shutdown -r now -----立即重啟
/sbin/shutdown -r +10 ‘The system will reboot'----10分鐘后系統重啟并給每個登錄用戶發通知
/sbin/shutdown -k now ‘The system will reboot'----僅給每個登錄用戶發通知并不真關機
2.halt—-最簡單的關機命令
???? 其實halt就是調用shutdown -h。halt執行時﹐殺死應用進程﹐執行sync系統調用﹐文件系統寫操作完成后就會停止內核。
???? 參數說明:
??????? [-n] 防止sync系統調用﹐它用在用fsck修補根分區之后﹐以阻止內核用老版本的超級塊〔superblock〕覆蓋修補過的超級塊。
??????? [-w] 并不是真正的重啟或關機﹐只是寫wtmp〔/var/log/wtmp〕紀錄。
??????? [-d] 不寫wtmp紀錄〔已包含在選項[-n]中〕。
??????? [-f] 沒有調用shutdown而強制關機或重啟。
??????? [-i] 關機〔或重啟〕前﹐關掉所有的網絡接口。
??????? [-p] 該選項為缺省選項。就是關機時調用poweroff。
3.reboot
????? reboot的工作過程差不多跟halt一樣﹐不過它是引發主機重啟﹐而halt是關機。它的參數與halt相差不多。
4.init
????? init是所有進程的祖先﹐它的進程號始終為1﹐所以發送TERM信號給init會終止所有的用戶進程﹑守護進程等。shutdown就是使用這種機制。init定義了8個運行級別(runlevel),init 0為關機﹐init1為重啟。關于init可以長篇大論﹐這里就不再敘述。另外還有telinit命令可以改變init的運行級別﹐比如﹐telinit -iS可使系統進入單用戶模式﹐并且得不到使用shutdown時的信息和等待時間。
5.poweroff
????? 關機,在多用戶方式下(Runlevel 3)不建議使用.
/*********************************************************************************************************/
命令簡介
shutdown,poweroff,reboot,halt,init都可以進行關機,大致用法。
/sbin/halt ? ? [-n] [-w] [-d] [-f] [-i] [-p] [-h]
/sbin/reboot ? [-n] [-w] [-d] [-f] [-i]
/sbin/poweroff [-n] [-w] [-d] [-f] [-i] [-h]
[root@linux ~]$ reboot --h
usage: reboot [-n] [-w] [-d] [-f] [-h] [-i]
? ? ? ? -n: 停系統之前不同步
? ? ? ? -w: 只寫wtmp reboot記錄并離開
? ? ? ? -d: 不寫wtmp記錄
? ? ? ? -f: 強制停機或重啟
? ? ? ? -h: 讓硬盤處于單機模式
? ? ? ? -i: 關閉所有的網絡接口
關機流程
1. 刷新硬盤緩存:
2. 記錄重啟事件:(/var/run/utmp,/var/log/wtmp)
3. 殺掉所有進程:
4. 最后重啟機器:
關機例子
# shutdown -h now ? ? ? ? ?#立刻關機
# shutdown -h 2:30 'halt' ?#2點30分關機,注意以本機時間為準
# halt -p ? ? ? ? ? ? ? ? ?#立刻關機
# init 0 ? ? ? ? ? ? ? ? ? #立即將系統運行級別切換為0,即關機
# shutdown now ? ? ? ? ? ? #切換至單人操作模式(不加任何選項時)
重啟例子
# shutdown -k now 'reboot' #發出警告訊息,但沒有真的關機.
# shutdown -t5 -r now ? #立刻重啟, 但在警告和刪除進程之間,延遲5秒鐘.
# init 6 ? ? ? ? ? ? ? ? ? #立即將系統運行級別切換為6,即重啟
# shutdown -r +10 'reboot' #10分鐘后重啟
# shutdown -c ? ? ? ? ? ? ?#取消之前的shutdown命令
# shutdown -r now ? ? ? ? ?#立刻重啟
關機準備
Linux不比Windows,如果不能正常關機,因來不及將數據寫回文件,可能會導致文件系統損壞。所以在關機前要注意:
1. 觀察系統狀態
- 用who命令,查看在線用戶
- 用netstat -a命令,查看網絡聯機狀態
- 用ps aux命令,查看后臺執行程序
2. 通知在線用戶 #shutdown -k now 'System will reboot in 30 minutes!'
3. 使用正確命令 #首先要搞清楚是關機還是重啟,其次要注意參數
4. 注意數據同步 #使用sync數據同步寫入磁盤
其他說明
1. 查看重啟記錄?
# last reboot
2. 遠端啟動機器?
#?ssh root@server /sbin/reboot
# ssh root@192.168.0.1 /sbin/shutdown -r now
總結
以上是生活随笔為你收集整理的Linux开关机命令:shutdown,reboot,halt,init之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ls –al命令来观察文件的权限,每个文
- 下一篇: 网络管理的5大功能!