Linux的系統停止與重啟動命令詳解

來源:互聯網
上載者:User

 學習筆記:Linux的系統停止與重啟動命令詳解
 
 
來源: ChinaUnix部落格  日期: 2006.05.21 18:04 (共有0條評論) 我要評論
 
聲明:可以自由轉載本文,但請務必保留本文的完整性。
作者:張子堅
說明:本文所涉及樣本均在fedora core3下得到。
按照正確的過程來關閉Linux系統是很重要的。如果你沒有這樣做,你的檔案系統很可能會變得毫無價值並且檔案也會變得混亂。這是因為Linux有一個磁碟緩衝,它不會將資料立刻寫入磁碟的,而是在一定的間隔時間。這極大地改進了效能,但也意味著如果你隨意地關閉電源,此時緩衝中可能儲存著許多資料並且磁碟上的資料會不完全而不能成為一個完整啟動並執行檔案系統(因為只有一些資料被寫入硬碟)。

不能僅僅扳動電源開關的另一個理由是,在一個多任務系統中,後台可能正運行著許多程式,隨意地關閉電源損失會非常慘重的。通過進行適當的關機過程,你可以確信所有的後台進程都能儲存它們的資料。

 

以下詳細介紹停止與重啟動命令,它們分別為init,runlevel,telinit,halt,shutdown,reboot
init

init[option][runlevel]

系統管理命令。

選項
-t seconds
    當運行層級改變時,在SIGTERM之後經過seconds秒發送SIGKILL。預設值為20。
檔案
init是任意一台Unix機器在啟動時都要執行的第一個進程。它驗證所有檔案系統的完整性,然後用fork和exec建立和執行其他進程,就像由/etc/inittab指定的那樣。哪一個進程可以運行由/runlevel控制。所有結束的進程都被記錄在/var/run/utmp/和/var/log/wtmp中。當運行級改變時,init給所有不能在新的運行層級上執行的進程發送SIGTERM訊號,20秒後,發送SIGKILL訊號。

運行層級
當前運行層級可以由telinit改變,telinit通常僅僅是到init的一個連結。預設的運行層級隨發布版的不同而不同,但以下是標準層級:
0 停止系統。
1, s, S 單一使用者模式。
6 重新啟動系統。
q,Q 重讀/etc/inittab。
可以在/etc/inittab檔案中查出自己系統的運行層級。

runlevel

系統管理命令。顯示以前和當前系統的運行層級。

telinit

telinit[option][runlevel]

系統管理命令。發訊號通知init改變系統的運行層級。init是所有進程的祖先,telinit實際上是到init的一個連結。

選項
-t seconds
在發送SIGTERM訊號seconds秒之後發送SIGKILL。預設值為20。運行層級
預設的運行層級隨發布版的不同而不同,但是,也有一些標準:
0 停止系統。
1 , s, S 單個使用者。
6 重新啟動系統。
a, b , c 僅僅處理在/etc/inittab中運行層級被標記為a,b或c的條目。
q, Q 重讀/etc/inittab檔案。
在/etc/inittab檔案中查閱系統的運行層級。

halt

halt[options]

系統管理命令。在檔案/var/log/wtmp中插入一條記錄日誌。如果系統處於運行層級0或6,則停止所有進程;否則調用shutdown -nf。

選項
-d 禁止在/var/log/wtmp中寫。
-f 即使在shutdown -nf被正常調用時也調用halt(也就是說,即使不是運行層級0或6,也強制調用halt)。
-n 禁止對sync的正常調用。
-w 禁止正常執行,只把記錄日誌寫到/var/log/wtmp中。

shutdown[options]when[message]

系統管理命令。終止所有進程。when可以是指定的時間(以hh:mm格式)、要等待的分鐘數(以+m格式),或者now。一條廣播訊息通知所有使用者離開系統。給進程發送SIGTERM訊號,以讓它們體面地退出。調用/etc/init執行是的關機,其操作之一是把系統置於運行層級1。只有特權使用者才能執行shutdown命令。在預設或者有定義的情況下,廣播訊息在寬限期期間以規則的間隔進行廣播,越臨近關閉時間,訊息的廣播越頻繁。

選項
-c 取消進行中中的關閉操作。
-f 快速重新啟動,在重新啟動時禁止對fsck的常規調用。
-h 當關閉完成時停止系統。
-k 輸出警告資訊,但禁止實際的關閉。
-n 不調用init就執行關閉。
-r 當關閉完成時重新啟動系統。
-t sec 在殺死進程與改變運行層級之間確保延時sec秒。

例:

# shutdown -h +10 'We will install a new disk. System should
> be back on-line in three hours.'

這將警告所有使用者系統將在十分鐘後關閉,並且他們最好馬上退出以防止資料的丟失。警告資訊將顯示在所有登入的使用者的終端上。

reboot

reboot[options]
系統管理命令,停止檔案系統,關閉系統,然後重新啟動系統。因為這條命令立即停止所有的進程,所以它應該只在單一使用者模式下運行。如果系統不在0級或6級上運行,reboot就調用shutdown -nf。

選項
-d 禁止寫/var/log/wtmp。
-f 即使要正常調用shutdown,也調用reboot。
-n 禁止對sync的常規調用。
-w 禁止正常執行;只是寫/var/log/wtmp。

uptime

輸出目前時間,聯機操作的時間量、當前登陸的使用者數(可以包括同一使用者的多次登陸)以及系統負載平均值。這種輸出也可以由w命令的第一行產生。
說明:
SIGTERM訊號,SIGKILL訊號,sync,fsck

有兩個訊號可以停止進程:SIGTERM和SIGKILL。 SIGTERM比較友好,進程能捕捉這個訊號,根據您的需要來關閉程式。在關閉程式之前,您可以結束開啟的記錄檔案和完成正在做的任務。在某些情況下,假如進程進行中作業而且不能中斷,那麼進程可以忽略這個SIGTERM訊號。

對於SIGKILL訊號,進程是不能忽略的。這是一個 “我不管您在做什麼,立刻停止”的訊號。假如您發送SIGKILL訊號給進程,Linux就將進程停止在那裡。

有些人喜歡使用三次sync來關閉系統,等待磁碟I/O停止,然後關閉電源。如果沒有程式運行著,那麼這和使用shutdown是等同的。然而,這樣做沒有卸載任何檔案系統並且可能會導致ext3fs的“乾淨檔案系統”標誌。三次使用sync來關閉系統的方法不值得推薦。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.