一些初學者經常在 BBS 上提出關於 shutdown 和 kill 的兩個問題。本文擬對這兩個問題作出詳細的解答。另外,說明一下 Linux 的目錄組織和它們的內容。
一、關於 shutdown
有的初學者用 shutdown 關不了機,一些人說你對 shutdown 命令還不太了解,其實直接的關機命令是 halt。在多用戶的系統中,關機有很多學問,下面就和大家探討一下。
關機和重啟的命令有很多種,比如:
shutdown [-trkhncfF -time]
halt [-nwdfip]
reboot [-nwdfi]
init
kill -TERM 1
poweroff
1.shutdown 安全地將系統關機
許多人把在公共機房的壞習慣(直接用 POWER 鍵關閉電源)帶到了 linux,強制關機的問題是可能會丟失數據,讓系統處於不穩定的狀態,甚至在有的系統中會損壞硬件設備。而使用 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。