Linux shutdown和Init的命令區別,以及計算帶寬

昨天去面試,也許是長時間不操做CentOS 忽然被問Shutdown和Init的命令區別。一時真的想不起來,另外只是常常用,沒有仔細的研究過。就回來查詢瞭解一下linux


shutdown 先執行關閉進程,寫入磁盤等一系列操做後,再調用 init 0關機 或者init 6 重啓

halt 沒有在init 0 ,init 6運行級別時,調用shutdown(至關於shutdown -h now)

reboot 沒有在init 0 ,init 6運行級別時,調用shutdown(至關於shutdown -r now)

poweroff 直接指向 halt -p 至關於halt

init 0命令用於當即將系統運行級別切換爲0,即關機,init 0 就直接去執行/etc/rc.d/rc1.d裏面的腳本了
面試


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相關的資料。
windows


   shutdown 參數說明:
   [-t] 在改變到其它runlevel以前﹐告訴init多久之後關機。
   [-r] 重啓計算器。
   [-k] 並不真正關機﹐只是送警告信號給每位登陸者〔login〕。
   [-h] 關機後關閉電源〔halt〕。
   [-n] 不用init﹐而是本身來關機。不鼓勵使用這個選項﹐並且該選項所產生的後果每每不老是你所預期獲得的。
   [-c] cancel current process取消目前正在執行的關機程序。因此這個選項固然沒有時間參數﹐可是能夠輸入一個用來解釋的訊息﹐而這信息將會送到每位使用者。
   [-f] 在重啓計算器〔reboot〕時忽略fsck。
[-F] 在重啓計算器〔reboot〕時強迫fsck。
   [-time] 設定關機〔shutdown〕前的時間。
     
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爲關機﹐init 1爲重啓。關於init能夠長篇大論﹐這裏就再也不敘述。另外還有telinit命令能夠改變init的運行級別﹐好比﹐telinit -iS可以使系統進入單用戶模式﹐而且得不到使用shutdown時的信息和等待時間。

糾正一下 HALT 命令至關於 SHUTDOWN -H NOW
後邊這個NOW 能夠替換成關機時間的參數
糾正一下,關於init
init 1不是reboot,而是單用戶,init 6纔是重啓,cloud每天用init 0關機,用init 6重啓,這個應該仍是沒有記錯的。
inittab文件裏彷佛是這麼寫的。

0 Halt
1 Single user
2 multi user without network
3 Multi user
4 unuse
5 X11
6 Reboot
所說的8個,是加上S,s。cloud不知道運行級別S,s和runlevel 1有什麼區別,哪位能夠指教一下?

安全

Reboot與init 6的區別服務器


Reboot與init 6的區別網絡

原由在於:重啓服務器後有時候服務不會啓動,而有時候又能夠自動運行,惟一差異在於重啓命令用的是reboot仍是init 6.

後查了相關資料,居然大有玄機:

對這兩個操做使用man命令看到的內容以下:
init 6 Stop the operating system and reboot to the state defined by the initdefault entry in /etc/inittab.

reboot - reboot performs a sync(1M) operation on the disks, and then a
multi- user reboot is initiated. See init(1M) for details.

"init 6" 基於一系列/etc/inittab文件,而且每一個應用都會有一個相應shutdown腳本。
'init 6' 調用一系列shutdown腳本(/etc/rc0.d/K*)來使系統優雅關機; 
'reboot'並不執行這些過程,reboot更是一個 kernel級別的命令,不對應用使用shutdown腳本。 .
咱們應該在一般狀況下使用 init 6.
在出問題的情況下或強制重啓 時使用reboot.架構




下面是一個朋友的計算方式:ide

帶寬的大小
一般咱們在架構網站的時候,會設定一些目標,好比網站天天要能承受千萬PV的訪問量,這時咱們要估算一下大概須要多大的帶寬。計算帶寬大小主要的有2個主要指標(峯值流量和頁面大小),咱們先作出必要的假設:
1.   峯值流量是平均流量的N倍;
2.   每次訪問平均的頁面大小是100KB左中。
若是1000萬PV的訪問量在一天內平均分佈,每秒大約120次訪問,若是按平均每次訪問頁面大小是100KB字節計算,120次訪問總計大約就是12000KB。字節的單位是Byte,而帶寬單位是bit,它們之間的關係是1Byte=8bit,因此12000k Byte大體就至關於96000k bit,也就是90Mbps的樣子。實際上,咱們的網站必須能在峯值流量時保持正常運行狀態,因此按照假設的峯值流量計算,真實帶寬的需求應該在270Mbps左右。網站

相關文章
相關標籤/搜索