總覽 SYNOPSIS
/sbin/shutdown [-t sec] [-arkhncfF] time [warning-message]
描述 DESCRIPTION
shutdown 以一種安全的方式關閉系統。所有登陸用戶都可以看到關機信息提示,並且 login(1) 將被阻塞。可以指定立刻關機,也可以指定系統在一定的延時后關機。所有進程都將接收到 SIGTERM 信號。這可以使 vi(1) 等程序有時間將處於編輯狀態的文件進行存儲,郵件和新聞程序進程則可以將所有緩沖池內的數據進行適當的清除等等。 shutdown 通過通知 init 進程,要求它改換運行級別來實現。運行級別 0 用來關閉系統,運行級別 6 用來重啟系統,運行級別 1 用來使系統進入執行系統管理任務狀態,如果沒有給出 -h 或 -r 標志時,這是 shutdown 命令的默認工作狀態。具體關機或重啟所執行的操作請查閱 /etc/inittab 文件中相應的運行級別欄。
選項 OPTIONS
- -a
- 使用 /etc/shutdown.allow 來驗證身份。
- -t sec
- 通知 init(8) 在轉換到其它運行級別前,發送警告 (warning) 信號后延時 ( sec) 秒數后再發送關閉 (kill) 信號。
- -k
- 並非真正關機,只向所有人顯示警告信息。
- -r
- 重啟。
- -h
- 停機。
- -n
- [DEPRECATED(不應再使用)] 不調用 init(8) 程序進行關機操作,而由自己進行。不建議用戶使用這種關機方式,它的結果一般也不是你希望的那樣。
- -f
- 重啟時跳過磁盤檢測。
- -F
- 重啟時強制磁盤檢測。
- -c
- 取消運行中的 shutdown 進程。不可能為此選項指定 time 參數,但你可以在命令行輸入一條解釋消息來向所有用戶說明。(一般的shutdown指令可以用按“+”號來進行中斷)
- time
- 關機時間。
- warning-message
- 發送給所有用戶的消息。
time 參數的格式可以有很多種。首先,可以是 hh:mm 格式的絕對時間,其中 hh 指的是小時(一到二位數),mm 指的是分鍾(二位數)。第二種是 +m 格式,其中 m 指的是等待的分鍾數。 now 是 +0 的別名。
如果 shutdown 在調用時使用了延時,它將自動創建一個咨詢 (advisory) 文件 /etc/nologin ,作用是禁止 login(1) 允許新用戶登陸,除非 shutdown 在向 init 發信號前意外中止 (就是說,它被取消或出了什么問題)。它會在調用 init 改變運行級之前刪除這個文件。
-f 標志意味着 `快速重啟'。這將創建一個咨詢 (advisory) 文件 /fastboot ,此文件在系統重啟時會被檢測到。啟動腳本 rc 會檢測是否存在這樣的文件,如果有,就不會再運行 fsck(1),因為系統是以正常方式關閉的。這之后,啟動進程會刪除 /fastboot。
-F 標志意味着 `強制 fsck'。這將創建一個咨詢 (advisory) 文件 /forcefsck,此文件在系統重啟時會被檢測到。啟動腳本 rc 會檢測是否存在這個文件,如果有,就運行 fsck(1) 並且加上一個特殊的 `force' 標志,以使得即使正常卸載的文件系統也被檢查。這之后,啟動進程會刪除 /forcefsck。
-n 標志導致 shutdown 不調用 init 程序進行關機,而是自己關閉所有運行中的進程。shutdown 接下來會關閉配額 (quota),記賬 (accounting) 和交換分區,卸載所有文件系統。
訪問控制 ACCESS CONTROL
如果在 /etc/inittab 文件中有適當的條目,當按下特殊鍵 CTRL-ALT-DEL 時,shutdown 可以被 init(8) 調用。這意味着可以物理地接觸到終端鍵盤的任何人都可以關閉系統。要避免這種行為,shutdown 可以檢測是否有授權的用戶登錄到了虛擬終端之一。如果 shutdown 在調用時帶有 -a 參數 (可以將它添加到 /etc/inittab 中 shutdown 的執行命令之后),它將檢測是否存在 /etc/shutdown.allow 文件。接下來它比較文件中的登錄名與虛擬終端的登錄用戶列表 (在/var/run/utmp)。只有當授權的用戶之一 或者 root 登錄了,它才會繼續。否則,它會把信息
shutdown: no authorized users logged in
寫到 (物理的) 系統終端。/etc/shutdown.allow 的格式是每行一個用戶名。允許出現空行和注釋行 (以 # 開頭)。此文件當前有最多 32 個用戶的限制。
注意,如果 /etc/shutdown.allow 不存在,-a 參數將被忽略。
文件 FILES
/fastboot /etc/inittab /etc/init.d/halt /etc/init.d/reboot /etc/shutdown.allow
注意 NOTES
很多用戶忘記了傳遞 time 參數,結果被 shutdown 產生的錯誤消息所迷惑。time 參數是必須的,90% 的情況下這個參數會是 now。
Init 只能在終端模式捕獲 CTRL-ALT-DEL 並且啟動 shutdown。如果系統正在運行 X window System,X 服務器處理所有的按鍵。一些 X11 環境使得捕獲 CTRL-ALT-DEL 成為可能,但是這個事件究竟做了什么依賴於那個環境。
Shutdown 沒有被設計為使用 setuid。/etc/shutdown.allow 不用來找出誰在執行 shutdown ,它*只*用來檢查當前在終端 (之一) 登錄的用戶。