重启或关闭 Linux 系统是诸多风险操作之一,务必慎之又慎。
Linux 系统在重启或关闭之前,会通知所有已登录的用户和进程。如果在命令中加入了时间参数,系统还将拒绝新的用户登入请求。
推荐阅读:
下面将依次介绍以下命令
shutdown
、halt
、poweroff
、reboot
:用于休眠、重启或关机init
:initialization 的简称,是系统启动的第一个进程systemctl
:systemd 是 Linux 系统和服务器的管理程序
shutdown 命令
shutdown
命令用于重启或关闭本地/远程的 Linux 设备,并提供了多个选项。如果定义了时间参数,则系统会在关机的 5 分钟前创建/run/nologin
文件,以确保后续的登录请求会被拒绝。
通用语法如下:
> shutdown [OPTION] [TIME] [MESSAGE]
运行以下命令则会立即关闭 Linux 设备。-h now
表示立刻杀死所有进程,并关闭系统:
-h
:如果不特指-halt
选项,则等价于-poweroff
选项
> shutdown -h now
另外我们可以使用带有-halt
选项的shutdown
命令立即关闭设备:
-H
、--halt
:停止设备运行
> shutdown --halt now
# 或者
> shutdown -H now
还可以使用带有poweroff
选项的shutdown
命令:
-P
、--poweroff
:切断电源(默认)
> shutdown --poweroff now
# 或者
> shutdown -P now
如果没有使用时间选项运行以下命令,则命令会在一分钟之后执行:
[root@centos-1~] > shutdown -h
Shutdown scheduled for Mon 2018-10-08 06:42:31 EDT, use 'shutdown -c' to cancel.
[root@centos-2~] >
Broadcast message from root@centos-1 (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!
若要取消关机计划,则可使用shutdown -c
:
[root@centos-1~] > shutdown -c
Broadcast message from root@centos-1 (Mon 2018-10-08 06:39:09 EDT):
The system shutdown has been cancelled at Mon 2018-10-08 06:40:09 EDT!
同样的,其他登录用户都能在中断中看到如下的广播消息:
[root@centos-2~] >
Broadcast message from root@centos-1 (Mon 2018-10-08 06:41:35 EDT):
The system shutdown has been cancelled at Mon 2018-10-08 06:42:35 EDT!
如果想在指定时间(例如N
秒)后执行重启或关机操作,则可添加时间参数,并可以为所有登录用户添加自定义广播消息。例如,我们将在五分钟后重启设备:
[root@centos-1~] > 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@centos-2~] >
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!
运行以下命令则会立即杀死所有进程并重启系统:
> shutdown -r now
reboot 命令
reboot
命令同样可以重启或关闭本地/远程的 Linux 设备。
执行不带任何参数的reboot
命令以重启 Linux 设备:
> reboot
执行带-p
参数的reboot
命令以关闭 Linux 设备电源:
-p
、--poweroff
:调用halt
或poweroff
命令,切断设备电源
> reboot -p
执行带-f
参数的reboot
命令以强制重启 Linux 设备(类似按压机器上的电源键):
-f
、--force
:立刻强制终端,切断电源或重启
> reboot -f
init 命令
init
进程是 Linux 系统启动的第一个进程。
它会检查/etc/inittab
文件并决定 Linux 的运行级别。同时,允许用户在 Linux 设备上执行关机或重启操作。级别范围为0~6
,共七个运行等级。
执行以下命令关闭系统:
0
:停机 - 关闭系统
> init 0
执行以下命令重启设备:
6
:重启 - 重启设备
> init 6
halt 命令
halt
命令用来切断电源或关闭本地/远程 Linux 设备。它会中断所有进程并关闭 CPU:
> halt
poweroff 命令
poweroff
命令同样用来切断电源或关闭本地/远程 Linux 设备。poweroff
很像halt
,但不同的是它可以关闭设备硬件:poweroff
会给主板发送 ACPI 指令,主板再将信号发送给电源并切断电源:
> poweroff
systemctl 命令
systemd 是一款适用于所有主流 Linux 发行版的全新 init 系统和系统管理器,它是内核启动的第一个进程,并持有序号为1
的进程 PID。
systemd
是一切进程的父进程,Fedora 15 是第一个适配安装 systemd(替代 upstart)的 Linux 发行版。
systemctl
是命令行下管理 systemd 守护进程和服务的主要工具。常用命令包括:start
、restart
、stop
、enable
、disable
、reload
和status
。
systemd 使用.service
文件而不是 SysV init 使用的 bash 脚本。systemd 将所有守护进程归于自身的 Linux cgroups 用户组下,可以浏览/cgroup/systemd
文件查看该系统的层次等级。
> systemctl halt
> systemctl poweroff
> systemctl reboot
> systemctl suspend
> systemctl hibernate
参考文章