在 Linux 管理員的日程當中,有很多需要執(zhí)行的任務,其中就有系統(tǒng)的重啟和關閉。
對于 Linux 管理員來說,重啟和關閉系統(tǒng)是其諸多風險操作中的一例,有時候,由于某些原因,這些操作可能無法挽回,他們需要更多的時間來排查問題。
在 Linux 命令行模式下我們可以執(zhí)行這些任務。很多時候,由于熟悉命令行,Linux 管理員更傾向于在命令行下完成這些任務。
重啟和關閉系統(tǒng)的 Linux 命令并不多,用戶需要根據(jù)需要,選擇合適的命令來完成任務。
以下所有命令都有其自身特點,并允許被 Linux 管理員使用.
建議閱讀:
-
查看系統(tǒng)/服務器正常運行時間的 11 個方法
-
Tuptime 一款為 Linux 系統(tǒng)保存歷史記錄、統(tǒng)計運行時間工具
系統(tǒng)重啟和關閉之始,會通知所有已登錄的用戶和進程。當然,如果使用了時間參數(shù),系統(tǒng)將拒絕新的用戶登入。
執(zhí)行此類操作之前,我建議您堅持復查,因為您只能得到很少的提示來確保這一切順利。
下面陳列了一些步驟:
-
確保您擁有一個可以處理故障的控制臺,以防之后可能會發(fā)生的問題。 VMWare 可以訪問虛擬機,而 IPMI、iLO 和 iDRAC 可以訪問物理服務器。
-
您需要通過公司的流程,申請修改或故障的執(zhí)行權直到得到許可。
-
為安全著想,備份重要的配置文件,并保存到其他服務器上.
-
驗證日志文件(提前檢查)
-
和相關團隊交流,比如數(shù)據(jù)庫管理團隊,應用團隊等。
-
通知數(shù)據(jù)庫和應用服務人員關閉服務,并得到確定答復。
-
使用適當?shù)拿顝捅P操作,驗證工作。
-
最后,重啟系統(tǒng)。
-
驗證日志文件,如果一切順利,執(zhí)行下一步操作,如果發(fā)現(xiàn)任何問題,對癥排查。
-
無論是回退版本還是運行程序,通知相關團隊提出申請。
-
對操作做適當守候,并將預期的一切正常的反饋給團隊
使用下列命令執(zhí)行這項任務。
-
shutdown、halt、poweroff、reboot 命令:用來停機、重啟或切斷電源
-
init 命令:是 “initialization” 的簡稱,是系統(tǒng)啟動的第一個進程。
-
systemctl 命令:systemd 是 Linux 系統(tǒng)和服務器的管理程序。
方案 1:如何使用 shutdown 命令關閉和重啟 Linux 系統(tǒng)
shutdown 命令用于斷電或重啟本地和遠程的 Linux 機器。它為高效完成作業(yè)提供多個選項。如果使用了時間參數(shù),系統(tǒng)關閉的 5 分鐘之前,會創(chuàng)建 /run/nologin 文件,以確保后續(xù)的登錄會被拒絕。
通用語法如下:
# shutdown [OPTION] [TIME] [MESSAGE]
運行下面的命令來立即關閉 Linux 機器。它會立刻殺死所有進程,并關閉系統(tǒng)。
# shutdown -h now
-
-h:如果不特指 -halt 選項,這等價于 -poweroff 選項。
另外我們可以使用帶有 -halt 選項的 shutdown 命令來立即關閉設備。
# shutdown –halt now
或者
# shutdown -H now
-
-H, –halt:停止設備運行
另外我們可以使用帶有 poweroff 選項的 shutdown 命令來立即關閉設備。
# shutdown –poweroff now
或者
# shutdown -P now
-
-P, –poweroff:切斷電源(默認)。
如果您沒有使用時間選項運行下面的命令,它將會在一分鐘后執(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!
對于使用了 -halt 選項:
# 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!
對于使用了 -poweroff 選項:
# 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 選項取消操作。
# 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ù),如果你想在 N 秒之后執(zhí)行關閉或重啟操作。這里,您可以為所有登錄用戶添加自定義廣播消息。例如,我們將在五分鐘后重啟設備。
# 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!
運行下面的命令立即重啟 Linux 機器。它會立即殺死所有進程并且重新啟動系統(tǒng)。
# shutdown -r now
-
-r, –reboot: 重啟設備。
方案 2:如何通過 reboot 命令關閉和重啟 Linux 系統(tǒng)
reboot 命令用于關閉和重啟本地或遠程設備。reboot 命令擁有兩個實用的選項。
它能夠優(yōu)雅的關閉和重啟設備(就好像在系統(tǒng)菜單中惦記重啟選項一樣簡單)。
執(zhí)行不帶任何參數(shù)的 reboot 命令來重啟 Linux 機器。
# reboot
執(zhí)行帶 -p 參數(shù)的 reboot 命令來關閉 Linux 機器電源。
# reboot -p
-
-p, –poweroff:調用 halt 或 poweroff 命令,切斷設備電源。
執(zhí)行帶 -f 參數(shù)的 reboot 命令來強制重啟 Linux 設備(這類似按壓機器上的電源鍵)。
# reboot -f
-
-f, –force:立刻強制中斷,切斷電源或重啟。
方案 3:如何通過 init 命令關閉和重啟 Linux 系統(tǒng)
init(“initialization” 的簡寫)是系統(tǒng)啟動的第一個進程。
它將會檢查 /etc/inittab 文件并決定 linux 運行級別。同時,允許用戶在 Linux 設備上執(zhí)行關機或重啟操作. 這里存在從 0 到 6 的七個運行等級。
建議閱讀:
-
如何檢查 Linux 上所有運行的服務
執(zhí)行以下 init 命令關閉系統(tǒng)。
# init 0
-
0: 停機 – 關閉系統(tǒng)。
運行下面的 init 命令重啟設備:
# init 6
-
6:重啟 – 重啟設備。
方案 4:如何通過 halt 命令關閉和重啟 Linux 系統(tǒng)
halt 命令用來切斷電源或關閉遠程 Linux 機器或本地主機。 中斷所有進程并關閉 cpu。
# halt
方案 5:如何通過 poweroff 命令關閉和重啟 Linux 系統(tǒng)
poweroff 命令用來切斷電源或關閉遠程 Linux 機器或本地主機。 poweroff 很像 halt,但是它可以關閉設備硬件(燈和其他 PC 上的其它東西)。它會給主板發(fā)送 ACPI 指令,然后信號發(fā)送到電源,切斷電源。
# poweroff
方案 6:如何通過 systemctl 命令關閉和重啟 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 是內核啟動的第一個進程,并持有序號為 1 的進程 PID。
建議閱讀:
-
chkservice – 一款終端下系統(tǒng)單元管理工具
它是一切進程的父進程,F(xiàn)edora 15 是第一個適配安裝 systemd (替代了 upstart)的發(fā)行版。
systemctl 是命令行下管理 systemd 守護進程和服務的主要工具(如 start、restart、stop、enable、disable、reload & status)。
systemd 使用 .service 文件而不是 SysV init 使用的 bash 腳本。 systemd 將所有守護進程歸與自身的 Linux cgroups 用戶組下,您可以瀏覽 /cgroup/systemd 文件查看該系統(tǒng)層次等級。
# systemctl halt
# systemctl poweroff
# systemctl reboot
# systemctl suspend
# systemctl hibernate