聽說,有個(gè)同事因?yàn)殛P(guān)閉服務(wù)器被打進(jìn) ICU ……
提問:你是如何關(guān)閉電腦的?
普通青年
文藝青年
二逼青年
你是屬于哪一種呢?
實(shí)話說,
這三種良許都干過~
還好我沒有對(duì)服務(wù)器這么做,
否則……
分分鐘被打進(jìn) ICU ……
1. 關(guān)機(jī)命令知多少
對(duì)于 Linux 電腦,正常情況下你是如何關(guān)機(jī)的?想必大家應(yīng)該都是類似這樣操作:
但是,對(duì)于很多服務(wù)器,它們并沒有 GUI 界面,或者很多服務(wù)器我們是通過 SSH 來遠(yuǎn)程操作,那么我們只能通過命令行來進(jìn)行關(guān)機(jī)。Linux 和類Unix 系統(tǒng)(如macOS)都為大家提供了幾個(gè)命令來從命令行關(guān)閉或重啟系統(tǒng),一般有下幾個(gè)命令:
- shutdown
- halt
- reboot
- poweroff
這些命令從漢語字面意義來看,多少有些相似,可能會(huì)讓人覺得困惑。但是如果使用一些相應(yīng)的選項(xiàng),所有這些命令都可以執(zhí)行關(guān)機(jī)、重啟和掛起等操作。但實(shí)際上,你用 man 命令來查看這幾個(gè)命令的用法,出來的結(jié)果都是一樣的,如下圖所示。
為什么會(huì)是這樣的情況呢?我們要從這幾個(gè)命令的淵源說起。
2. 深挖關(guān)機(jī)命令歷史
為什么那幾個(gè)關(guān)機(jī)命令的 man page 都一樣?其實(shí)原因很簡單,就是因?yàn)?Systemd 系統(tǒng)取代了古老的 system v init 系統(tǒng)。在 Linux 世界中,F(xiàn)edora 在 2011 年開始使用 init 引導(dǎo)程序,從那以后許多發(fā)行版開始紛紛效仿。
但是,Debian 和 Ubuntu 于 2015 年開始切換到 Systemd 引導(dǎo)程序。
在基于 Systemd 的發(fā)行版上,shutdown、reboot、halt 和 poweroff 命令實(shí)際上都是指向 systemctl 命令的快捷方式。為了保持與基于 system v init 的發(fā)行版的兼容性,Systemd 系統(tǒng)保留了這些命令。
3. 關(guān)機(jī)命令使用詳解
一臺(tái)服務(wù)器通常會(huì)有多人一起使用,所以如果需要關(guān)閉或重啟的話,我們需要提前做好計(jì)劃,否則擅自關(guān)機(jī)的話會(huì)分分鐘被同事打進(jìn) ICU 。
接下來,我們來重點(diǎn)講解 shutdown 命令的用法。
所以,為了避免被揍,我們需要在關(guān)機(jī)之前告知所有已經(jīng)登錄的用戶,提醒他們做好保存的工作。比如,我們打算從現(xiàn)在開始 15 分鐘后關(guān)閉系統(tǒng),需要鍵入如下命令:
- $ shutdown +15 Shutting down in 15 minutes!
其中,+15 表示從現(xiàn)在起 15 分鐘后,這里 + 號(hào)是可選的。而在 +15 之后跟的那串信息就是會(huì)通知到所有已經(jīng)登錄系統(tǒng)的用戶的信息。
所以,當(dāng)以上命令執(zhí)行之后,所有已經(jīng)登錄系統(tǒng)的用戶都會(huì)收到 Shutting down in 15 minutes! 這條信息,并且 15 分鐘后系統(tǒng)將關(guān)閉。
如果我們要取消關(guān)閉,可以使用 -c 選項(xiàng)。
- $ shutdown -c
同樣地,所有已登錄的用戶都會(huì)收到一條 The system shutdown has been cancelled 的通知。
如果我們?cè)?shutdown 命令之后不跟任何參數(shù),那么默認(rèn)就是在 1 分鐘后關(guān)機(jī)。同時(shí),這樣操作不會(huì)通知在線的用戶。所以,這樣做很危險(xiǎn),一定要慎重。
- $ shutdown
如果我們甚至連一分鐘都等不了,那么我們可以在 shutdown 后面跟上 now,代表關(guān)閉立即生效。使用 now 就等同于使用了 +0 參數(shù)。
另外,時(shí)間參數(shù)也可以是我們期望關(guān)機(jī)的具體時(shí)間,例如 23:00 。但它必須遵循 HH:MM 的格式,并且必須是 24 小時(shí)式。執(zhí)行這條命令后,在系統(tǒng)關(guān)閉的前 5 分鐘,新的登錄將被阻止。
默認(rèn)情況下 shutdown 命令會(huì)使計(jì)算機(jī)進(jìn)入掛起狀態(tài),然后進(jìn)入關(guān)機(jī)狀態(tài)。但是,我們可以使用其它選項(xiàng)來改變這個(gè)默認(rèn)操作:
- -H (停止),將我們的計(jì)算機(jī)進(jìn)入掛起狀態(tài),但不會(huì)要求硬件斷電。
- -P (關(guān)機(jī))是默認(rèn)操作,將計(jì)算機(jī)切換到掛起狀態(tài),然后關(guān)閉電源。
- -r (重新啟動(dòng)),將我們的計(jì)算機(jī)進(jìn)入掛起狀態(tài),然后重新啟動(dòng)。
- -h (掛起并關(guān)機(jī))與 -P 一樣,如果同時(shí)使用-h和-H,則優(yōu)先使用-H選項(xiàng)
- -c (取消)該選項(xiàng)將取消任何定時(shí)關(guān)機(jī),掛起或重啟。
比如下面這個(gè)重啟的例子:
- $ shutdown -r 08:20 System rebooting at 08:20

本文轉(zhuǎn)載自微信公眾號(hào)「良許Linux」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系良許Linux公眾號(hào)。