重啟和關(guān)閉Linux系統(tǒng)的6個(gè)終端命令
在 Linux 管理員的日程當(dāng)中,有很多需要執(zhí)行的任務(wù),其中就有系統(tǒng)的重啟和關(guān)閉。
對(duì)于 Linux 管理員來(lái)說(shuō),重啟和關(guān)閉系統(tǒng)是其諸多風(fēng)險(xiǎn)操作中的一例,有時(shí)候,由于某些原因,這些操作可能無(wú)法挽回,他們需要更多的時(shí)間來(lái)排查問(wèn)題。
在 Linux 命令行模式下我們可以執(zhí)行這些任務(wù)。很多時(shí)候,由于熟悉命令行,Linux 管理員更傾向于在命令行下完成這些任務(wù)。
重啟和關(guān)閉系統(tǒng)的 Linux 命令并不多,用戶需要根據(jù)需要,選擇合適的命令來(lái)完成任務(wù)。
以下所有命令都有其自身特點(diǎn),并允許被 Linux 管理員使用.
系統(tǒng)重啟和關(guān)閉之始,會(huì)通知所有已登錄的用戶和進(jìn)程。當(dāng)然,如果使用了時(shí)間參數(shù),系統(tǒng)將拒絕新的用戶登入。
執(zhí)行此類操作之前,我建議您堅(jiān)持復(fù)查,因?yàn)槟荒艿玫胶苌俚奶崾緛?lái)確保這一切順利。
下面陳列了一些步驟:
- 確保您擁有一個(gè)可以處理故障的控制臺(tái),以防之后可能會(huì)發(fā)生的問(wèn)題。 VMWare 可以訪問(wèn)虛擬機(jī),而 IPMI、iLO 和 iDRAC 可以訪問(wèn)物理服務(wù)器。
- 您需要通過(guò)公司的流程,申請(qǐng)修改或故障的執(zhí)行權(quán)直到得到許可。
- 為安全著想,備份重要的配置文件,并保存到其他服務(wù)器上.
- 驗(yàn)證日志文件(提前檢查)
- 和相關(guān)團(tuán)隊(duì)交流,比如數(shù)據(jù)庫(kù)管理團(tuán)隊(duì),應(yīng)用團(tuán)隊(duì)等。
- 通知數(shù)據(jù)庫(kù)和應(yīng)用服務(wù)人員關(guān)閉服務(wù),并得到確定答復(fù)。
- 使用適當(dāng)?shù)拿顝?fù)盤(pán)操作,驗(yàn)證工作。
- 最后,重啟系統(tǒng)。
- 驗(yàn)證日志文件,如果一切順利,執(zhí)行下一步操作,如果發(fā)現(xiàn)任何問(wèn)題,對(duì)癥排查。
- 無(wú)論是回退版本還是運(yùn)行程序,通知相關(guān)團(tuán)隊(duì)提出申請(qǐng)。
- 對(duì)操作做適當(dāng)守候,并將預(yù)期的一切正常的反饋給團(tuán)隊(duì)
使用下列命令執(zhí)行這項(xiàng)任務(wù)。
shutdown
、halt
、poweroff
、reboot
命令:用來(lái)停機(jī)、重啟或切斷電源init
命令:是 “initialization” 的簡(jiǎn)稱,是系統(tǒng)啟動(dòng)的第一個(gè)進(jìn)程。systemctl
命令:systemd 是 Linux 系統(tǒng)和服務(wù)器的管理程序。
方案 1:如何使用 shutdown 命令關(guān)閉和重啟 Linux 系統(tǒng)
shutdown
命令用于斷電或重啟本地和遠(yuǎn)程的 Linux 機(jī)器。它為高效完成作業(yè)提供多個(gè)選項(xiàng)。如果使用了時(shí)間參數(shù),系統(tǒng)關(guān)閉的 5 分鐘之前,會(huì)創(chuàng)建 /run/nologin
文件,以確保后續(xù)的登錄會(huì)被拒絕。
通用語(yǔ)法如下:
# shutdown [OPTION] [TIME] [MESSAGE]
運(yùn)行下面的命令來(lái)立即關(guān)閉 Linux 機(jī)器。它會(huì)立刻殺死所有進(jìn)程,并關(guān)閉系統(tǒng)。
# shutdown -h now
-h
:如果不特指-halt
選項(xiàng),這等價(jià)于-poweroff
選項(xiàng)。
另外我們可以使用帶有 -halt
選項(xiàng)的 shutdown
命令來(lái)立即關(guān)閉設(shè)備。
# shutdown --halt now
或者
# shutdown -H now
-H, --halt
:停止設(shè)備運(yùn)行
另外我們可以使用帶有 poweroff
選項(xiàng)的 shutdown
命令來(lái)立即關(guān)閉設(shè)備。
# shutdown --poweroff now
或者
# shutdown -P now
-P, --poweroff
:切斷電源(默認(rèn))。
如果您沒(méi)有使用時(shí)間選項(xiàng)運(yùn)行下面的命令,它將會(huì)在一分鐘后執(zhí)行給出的命令。
# shutdown -h
Shutdown scheduled for Mon 2018-10-08 06:42:31 EDT, use 'shutdown -c' to cancel.
root@2daygeek.com#
Broadcast message from root@vps.2daygeek.com (Mon 2018-10-08 06:41:31 EDT):
The system is going down for power-off at Mon 2018-10-08 06:42:31 EDT!
其他的登錄用戶都能在中斷中看到如下的廣播消息:
[daygeek@2daygeek.com ~]$
Broadcast message from root@2daygeek.com (Mon 2018-10-08 06:41:31 EDT):
The system is going down for power-off at Mon 2018-10-08 06:42:31 EDT!
對(duì)于使用了 -halt
選項(xiàng):
# shutdown -H
Shutdown scheduled for Mon 2018-10-08 06:37:53 EDT, use 'shutdown -c' to cancel.
root@2daygeek.com#
Broadcast message from root@vps.2daygeek.com (Mon 2018-10-08 06:36:53 EDT):
The system is going down for system halt at Mon 2018-10-08 06:37:53 EDT!
對(duì)于使用了 -poweroff
選項(xiàng):
# shutdown -P
Shutdown scheduled for Mon 2018-10-08 06:40:07 EDT, use 'shutdown -c' to cancel.
root@2daygeek.com#
Broadcast message from root@vps.2daygeek.com (Mon 2018-10-08 06:39:07 EDT):
The system is going down for power-off at Mon 2018-10-08 06:40:07 EDT!
可以在您的終端上敲擊 shutdown -c
選項(xiàng)取消操作。
# shutdown -c
Broadcast message from root@vps.2daygeek.com (Mon 2018-10-08 06:39:09 EDT):
The system shutdown has been cancelled at Mon 2018-10-08 06:40:09 EDT!
其他的登錄用戶都能在中斷中看到如下的廣播消息:
[daygeek@2daygeek.com ~]$
Broadcast message from root@vps.2daygeek.com (Mon 2018-10-08 06:41:35 EDT):
The system shutdown has been cancelled at Mon 2018-10-08 06:42:35 EDT!
添加時(shí)間參數(shù),如果你想在 N
秒之后執(zhí)行關(guān)閉或重啟操作。這里,您可以為所有登錄用戶添加自定義廣播消息。例如,我們將在五分鐘后重啟設(shè)備。
# shutdown -r +5 "To activate the latest Kernel"
Shutdown scheduled for Mon 2018-10-08 07:13:16 EDT, use 'shutdown -c' to cancel.
[root@vps138235 ~]#
Broadcast message from root@vps.2daygeek.com (Mon 2018-10-08 07:08:16 EDT):
To activate the latest Kernel
The system is going down for reboot at Mon 2018-10-08 07:13:16 EDT!
運(yùn)行下面的命令立即重啟 Linux 機(jī)器。它會(huì)立即殺死所有進(jìn)程并且重新啟動(dòng)系統(tǒng)。
# shutdown -r now
-r, --reboot
: 重啟設(shè)備。
方案 2:如何通過(guò) reboot 命令關(guān)閉和重啟 Linux 系統(tǒng)
reboot
命令用于關(guān)閉和重啟本地或遠(yuǎn)程設(shè)備。reboot
命令擁有兩個(gè)實(shí)用的選項(xiàng)。
它能夠優(yōu)雅的關(guān)閉和重啟設(shè)備(就好像在系統(tǒng)菜單中惦記重啟選項(xiàng)一樣簡(jiǎn)單)。
執(zhí)行不帶任何參數(shù)的 reboot
命令來(lái)重啟 Linux 機(jī)器。
# reboot
執(zhí)行帶 -p
參數(shù)的 reboot
命令來(lái)關(guān)閉 Linux 機(jī)器電源。
# reboot -p
-p, --poweroff
:調(diào)用halt
或poweroff
命令,切斷設(shè)備電源。
執(zhí)行帶 -f
參數(shù)的 reboot
命令來(lái)強(qiáng)制重啟 Linux 設(shè)備(這類似按壓機(jī)器上的電源鍵)。
# reboot -f
-f, --force
:立刻強(qiáng)制中斷,切斷電源或重啟。
方案 3:如何通過(guò) init 命令關(guān)閉和重啟 Linux 系統(tǒng)
init
(“initialization” 的簡(jiǎn)寫(xiě))是系統(tǒng)啟動(dòng)的第一個(gè)進(jìn)程。
它將會(huì)檢查 /etc/inittab
文件并決定 linux 運(yùn)行級(jí)別。同時(shí),允許用戶在 Linux 設(shè)備上執(zhí)行關(guān)機(jī)或重啟操作. 這里存在從 0
到 6
的七個(gè)運(yùn)行等級(jí)。
建議閱讀:
執(zhí)行以下 init
命令關(guān)閉系統(tǒng)。
# init 0
0
: 停機(jī) – 關(guān)閉系統(tǒng)。
運(yùn)行下面的 init
命令重啟設(shè)備:
# init 6
-
6
:重啟 – 重啟設(shè)備。
方案 4:如何通過(guò) halt 命令關(guān)閉和重啟 Linux 系統(tǒng)
halt
命令用來(lái)切斷電源或關(guān)閉遠(yuǎn)程 Linux 機(jī)器或本地主機(jī)。 中斷所有進(jìn)程并關(guān)閉 cpu。
# halt
方案 5:如何通過(guò) poweroff 命令關(guān)閉和重啟 Linux 系統(tǒng)
poweroff
命令用來(lái)切斷電源或關(guān)閉遠(yuǎn)程 Linux 機(jī)器或本地主機(jī)。 poweroff
很像 halt
,但是它可以關(guān)閉設(shè)備硬件(燈和其他 PC 上的其它東西)。它會(huì)給主板發(fā)送 ACPI 指令,然后信號(hào)發(fā)送到電源,切斷電源。
# poweroff
方案 6:如何通過(guò) systemctl 命令關(guān)閉和重啟 Linux 系統(tǒng)
systemd 是一款適用于所有主流 Linux 發(fā)型版的全新 init 系統(tǒng)和系統(tǒng)管理器,而不是傳統(tǒng)的 SysV init 系統(tǒng)。
systemd 兼容與 SysV 和 LSB 初始化腳本。它能夠替代 SysV init 系統(tǒng)。systemd 是內(nèi)核啟動(dòng)的第一個(gè)進(jìn)程,并持有序號(hào)為 1 的進(jìn)程 PID。
建議閱讀:
它是一切進(jìn)程的父進(jìn)程,F(xiàn)edora 15 是第一個(gè)適配安裝 systemd (替代了 upstart)的發(fā)行版。
systemctl
是命令行下管理 systemd 守護(hù)進(jìn)程和服務(wù)的主要工具(如 start
、restart
、stop
、enable
、disable
、reload
& status
)。
systemd 使用 .service 文件而不是 SysV init 使用的 bash 腳本。 systemd 將所有守護(hù)進(jìn)程歸與自身的 Linux cgroups 用戶組下,您可以瀏覽 /cgroup/systemd
文件查看該系統(tǒng)層次等級(jí)。
# systemctl halt
# systemctl poweroff
# systemctl reboot
# systemctl suspend
# systemctl hibernate