1. 程式人生 > >linux下的關機重啟

linux下的關機重啟

我簡單的介紹一下linux下的一些關機重啟命令

  1. 第一個 shutdown 關機命令。

shutdown [-t seconds] [-rkhncfF] time [message]

引數說明

  • -t seconds : 設定在幾秒鐘之後進行關機程式
  • -k : 並不會真的關機,只是將警告訊息傳送給所有隻用者
  • -r : 關機後重新開機
  • -h : 關機後停機
  • -n : 不採用正常程式來關機,用強迫的方式殺掉所有執行中的程式後自行關機
  • -c : 取消目前已經進行中的關機動作
  • -f : 關機時,不做 fcsk 動作(檢查 Linux 檔系統)
  • -F : 關機時,強迫進行 fsck 動作
    time : 設定關機的時間
    message : 傳送給所有使用者的警告訊息
    在這裡插入圖片描述
  1. 第二個 reboot 重啟命令

reboot [-n] [-w] [-d] [-f] [-i]

引數

  • -n : 在重開機前不做將記憶體資料寫回硬碟的動作
  • -w : 並不會真的重開機,只是把記錄寫到 /var/log/wtmp 檔案裡
  • -d : 不把記錄寫到 /var/log/wtmp 檔案裡(-n 這個引數包含了 -d)
  • -f : 強迫重開機,不呼叫 shutdown 這個指令
  • -i : 在重開機之前先把所有網路相關的裝置先停止
  1. 第三個是halt關機命令

halt [-n] [-w] [-d] [-f] [-i] [-p]

引數說明

  • -n : 在關機前不做將記憶體資料寫回硬碟的動作
  • -w : 並不會真的關機,只是把記錄寫到 /var/log/wtmp 檔案裡
  • -d : 不把記錄寫到 /var/log/wtmp 檔案裡(-n 這個引數包含了 -d) -f : 強迫關機,不呼叫 shutdown 這個指令
  • -i : 在關機之前先把所有網路相關的裝置先停止
  • -p : 當關機的時候,順便做關閉電源(poweroff)的動作
  1. 第四個是 init 關機命令

  • init 0 - 停機(千萬不能把initdefault 設定為0 )

  • init 1 - 單使用者模式

  • init 2 - 多使用者,沒有 NFS 不聯網

  • init 3 - 完全多使用者模式(標準的執行級)

  • init 4 - 沒有用到

  • init 5 - X11 (xwindow) 圖形化介面模式

  • init 6 - 重新啟動 (千萬不要把initdefault 設定為6 )

在來說說他們之間的區別

  • poweroff 就是 halt的軟連結而已。

  • halt和shutdown都會執行sync和umount操作。

  • halt和shutdown的區別有很多,其中有一個是 shutdown 會去執行 /etc/rc0.d/ 下面的指令碼,也就是說會去執行runlevel 0 的指令碼,halt則不會。

  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〕前的時間。
  1. halt—-最簡單的關機命令
    其實halt就是呼叫shutdown -h。halt執行時﹐殺死應用程序﹐執行sync系統呼叫﹐檔案系統寫操作完成後就會停止核心。
  • 引數說明:
  • [-n] 防止sync系統呼叫﹐它用在用fsck修補根分割槽之後﹐以阻止核心用老版本的超級塊〔superblock〕覆蓋修補過的超級塊。
  • [-w] 並不是真正的重啟或關機﹐只是寫wtmp〔/var/log/wtmp〕紀錄。
  • [-d] 不寫wtmp紀錄〔已包含在選項[-n]中〕。
  • [-f] 沒有呼叫shutdown而強制關機或重啟。
  • [-i] 關機〔或重啟〕前﹐關掉所有的網路介面。
  • [-p] 該選項為預設選項。就是關機時呼叫poweroff。
  1. reboot
    reboot的工作過程差不多跟halt一樣﹐不過它是引發主機重啟﹐而halt是關機。它的引數與halt相差不多。
  2. init
    init是所有程序的祖先﹐它的程序號始終為1﹐所以傳送TERM訊號給init會終止所有的使用者程序﹑守護程序等。shutdown就是使用這種機制。init定義了8個執行級別(runlevel),init 0為關機﹐init1為重啟。關於init可以長篇大論﹐這裡就不再敘述。另外還有telinit命令可以改變init的執行級別﹐比如﹐telinit -iS可使系統進入單使用者模式﹐並且得不到使用shutdown時的資訊和等待時間。