正確的關機方法: sync, shutdown, reboot, halt, poweroff, init


正常情況下,要關機時需要注意底下幾件事:

  • 觀察系統的使用狀態:
    如果要看目前有誰在在線,可以下達『who』這個命令,而如果要看網絡的聯機狀態,可以下達 『 netstat -a 』這個命令,
  • 而要看背景運行的程序可以運行『 ps -aux 』這個命令。使用這些命令可以讓你稍微了解主機目前的使用狀態!
  • 當然啰,就可以讓你判斷是否可以關機了 (這些命令在后面Linux常用命令中會提及喔!)

  • 通知在線使用者關機的時刻:
    要關機前總得給在線的使用者一些時間來結束他們的工作,所以,這個時候你可以使用 shutdown 的特別命令來達到此一功能。

  • 正確的關機命令使用:
    例如 shutdown 與 reboot 兩個命令!

所以底下我們就來談一談幾個與關機/重新啟動相關的命令啰!

      • 將數據同步寫入硬盤中的命令: sync
      • 慣用的關機命令: shutdown
      • 重新啟動,關機: reboot, halt, poweroff

         

數據同步寫入磁盤: sync

第零章、計算器概論里面我們談到過數據在計算機中運行的模式, 所有的數據都得要被讀入內存后才能夠被CPU所處理,但是數據又常常需要由內存寫回硬盤當中(例如儲存的動作)。 由於硬盤的速度太慢(相對於內存來說),如果常常讓數據在內存與硬盤中來回寫入/讀出,系統的效能就不會太好。

因此在Linux系統中,為了加快數據的讀取速度,所以在默認的情況中, 某些已經加載內存中的數據將不會直接被寫回硬盤,而是先緩存在內存當中,如此一來, 如果一個數據被你重復的改寫,那么由於他尚未被寫入硬盤中,因此可以直接由內存當中讀取出來, 在速度上一定是快上相當多的!

不過,如此一來也造成些許的困擾,那就是萬一你的系統因為某些特殊情況造成不正常關機 (例如停電或者是不小心踢到power)時,由於數據尚未被寫入硬盤當中,哇!所以就會造成數據的升級不正常啦! 那要怎么辦呢?這個時候就需要sync這個命令來進行數據的寫入動作啦! 直接在文字接口下輸入sync,那么在內存中尚未被升級的數據,就會被寫入硬盤中!所以,這個命令在系統關機或重新啟動之前, 很重要喔!最好多運行幾次!

雖然目前的 shutdown/reboot/halt 等等命令均已經在關機前進行了 sync 這個工具的呼叫, 不過,多做幾次總是比較放心點~呵呵~

[root@www ~]# sync 

慣用的關機命令: shutdown

由於Linux的關機是那么重要的工作,因此除了你是在主機前面以tty7圖形接口來登陸系統時, 不論用什么身份都能夠關機之外,若你是使用遠程管理工具(如透過pietty使用ssh服務來從其他計算機登陸主機), 那關機就只有root有權力而已喔!

嗯!那么就來關機試試看吧!我們較常使用的是shutdown這個命令,而這個命令會通知系統內的各個程序 (processes),並且將通知系統中的run-level內的一些服務來關閉。shutdown可以達成如下的工作:

  • 可以自由選擇關機模式:是要關機、重新啟動或進入單人操作模式均可;
  • 可以配置關機時間: 可以配置成現在立刻關機, 也可以配置某一個特定的時間才關機。
  • 可以自定義關機信息:在關機之前,可以將自己配置的信息傳送給在線 user 。
  • 可以僅發出警告信息:有時有可能你要進行一些測試,而不想讓其他的使用者干擾, 或者是明白的告訴使用者某段時間要注意一下!這個時候可以使用 shutdown 來嚇一嚇使用者,但卻不是真的要關機啦!
  • 可以選擇是否要 fsck 檢查文件系統 。

那么shutdown的語法是如何呢?聰明的讀者大概已經開始找『男人』了!沒錯,隨時隨地的 man 一下,是很不錯的舉動!好了,簡單的語法守則為:

[root@www ~]# /sbin/shutdown [-t 秒] [-arkhncfF] 時間 [警告信息] 
選項與參數: -t sec : -t 后面加秒數,亦即『過幾秒后關機』的意思 -k : 不要真的關機,只是發送警告信息出去! -r : 在將系統的服務停掉之后就重新啟動(常用) -h : 將系統的服務停掉后,立即關機。 (常用) -n : 不經過 init 程序,直接以 shutdown 的功能來關機 -f : 關機並啟動之后,強制略過 fsck 的磁盤檢查 -F : 系統重新啟動之后,強制進行 fsck 的磁盤檢查 -c : 取消已經在進行的 shutdown 命令內容。 時間 : 這是一定要加入的參數!指定系統關機的時間!時間的范例底下會說明。 范例: [root@www ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins' # 告訴大家,這部機器會在十分鍾后關機!並且會顯示在目前登陸者的屏幕前方! # 至於參數有哪些呢?以下介紹幾個吧! 

此外,需要注意的是,時間參數請務必加入命令中,否則shutdown會自動跳到 run-level 1 (就是單人維護的登陸情況),這樣就傷腦筋了!底下提供幾個時間參數的例子吧:

[root@www ~]# shutdown -h now 
立刻關機,其中 now 相當於時間為 0 的狀態 [root@www ~]# shutdown -h 20:25 系統在今天的 20:25 分會關機,若在21:25才下達此命令,則隔天才關機 [root@www ~]# shutdown -h +10 系統再過十分鍾后自動關機 [root@www ~]# shutdown -r now 系統立刻重新啟動 [root@www ~]# shutdown -r +30 'The system will reboot' 再過三十分鍾系統會重新啟動,並顯示后面的信息給所有在在線的使用者 [root@www ~]# shutdown -k now 'This system will reboot' 僅發出警告信件的參數!系統並不會關機啦!嚇唬人! 

重新啟動,關機: reboot, halt, poweroff

還有三個命令可以進行重新啟動與關機的任務,那就是reboot, halt, poweroff。 其實這三個命令呼叫的函式庫都差不多,所以當你使用『man reboot』時,會同時出現三個命令的用法給你看呢。 其實鳥哥通常都只有記shutdown與reboot這兩個命令啦!不過使用poweroff這個命令卻比較簡單就是了!^_^ 通常鳥哥在重新啟動時,都會下達如下的命令喔:

[root@www ~]# sync; sync; sync; reboot 

既然這些命令都能夠關機或重新啟動,那他有沒有什么差異啊?基本上,在默認的情況下, 這幾個命令都會完成一樣的工作!(因為halt會先呼叫shutdown,而shutdown最后會呼叫halt!)。 不過,shutdown可以依據目前已啟動的服務來逐次關閉各服務后才關機;至於halt卻能夠在不理會目前系統狀況下, 進行硬件關機的特殊功能!你可以在你的主機上面使用root進行底下兩個命令來關機,比較看看差異在哪里喔!

[root@www ~]# shutdown -h now 
[root@www ~]# poweroff -f 

更多halt與poweroff的選項功能,請務必使用man去查詢一下喔!


切換運行等級: init

本章上頭有談到過關於run level的問題。之前談到的是系統運行的模式,分為純文本(run level 3)及圖形接口模式(run level 5)。除了這兩種模式外,有沒有其他模式呢?其實Linux共有七種運行等級, 七種等級的意義我們在后面會再談到。本章你只要知道底下四種運行等級就好了:

  • run level 0:關機
  • run level 3:純文本模式
  • run level 5:含有圖形接口模式
  • run level 6:重新啟動

那如何切換各模式呢?可以使用init這個命令來處理喔!也就是說,如果你想要關機的話, 除了上述的shutdown -h now以及poweroff之外,你也可以使用如下的命令來關機:

[root@www ~]# init 0 

來源:鳥哥的Linux私房菜


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM