标签 重启 下的文章

在 Linux 管理员的日程当中,有很多需要执行的任务,其中就有系统的重启和关闭。

对于 Linux 管理员来说,重启和关闭系统是其诸多风险操作中的一例,有时候,由于某些原因,这些操作可能无法挽回,他们需要更多的时间来排查问题。

在 Linux 命令行模式下我们可以执行这些任务。很多时候,由于熟悉命令行,Linux 管理员更倾向于在命令行下完成这些任务。

重启和关闭系统的 Linux 命令并不多,用户需要根据需要,选择合适的命令来完成任务。

以下所有命令都有其自身特点,并允许被 Linux 管理员使用.

建议阅读:

系统重启和关闭之始,会通知所有已登录的用户和进程。当然,如果使用了时间参数,系统将拒绝新的用户登入。

执行此类操作之前,我建议您坚持复查,因为您只能得到很少的提示来确保这一切顺利。

下面陈列了一些步骤:

  • 确保您拥有一个可以处理故障的控制台,以防之后可能会发生的问题。 VMWare 可以访问虚拟机,而 IPMI、iLO 和 iDRAC 可以访问物理服务器。
  • 您需要通过公司的流程,申请修改或故障的执行权直到得到许可。
  • 为安全着想,备份重要的配置文件,并保存到其他服务器上.
  • 验证日志文件(提前检查)
  • 和相关团队交流,比如数据库管理团队,应用团队等。
  • 通知数据库和应用服务人员关闭服务,并得到确定答复。
  • 使用适当的命令复盘操作,验证工作。
  • 最后,重启系统。
  • 验证日志文件,如果一切顺利,执行下一步操作,如果发现任何问题,对症排查。
  • 无论是回退版本还是运行程序,通知相关团队提出申请。
  • 对操作做适当守候,并将预期的一切正常的反馈给团队

使用下列命令执行这项任务。

  • shutdownhaltpoweroffreboot 命令:用来停机、重启或切断电源
  • init 命令:是 “initialization” 的简称,是系统启动的第一个进程。
  • systemctl 命令:systemd 是 Linux 系统和服务器的管理程序。

方案 1:如何使用 shutdown 命令关闭和重启 Linux 系统

shutdown 命令用于断电或重启本地和远程的 Linux 机器。它为高效完成作业提供多个选项。如果使用了时间参数,系统关闭的 5 分钟之前,会创建 /run/nologin 文件,以确保后续的登录会被拒绝。

通用语法如下:

# shutdown [OPTION] [TIME] [MESSAGE]

运行下面的命令来立即关闭 Linux 机器。它会立刻杀死所有进程,并关闭系统。

# 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:切断电源(默认)。

如果您没有使用时间选项运行下面的命令,它将会在一分钟后执行给出的命令。

# shutdown -h
Shutdown scheduled for Mon 2018-10-08 06:42:31 EDT, use 'shutdown -c' to cancel.

[email protected]#
Broadcast message from [email protected] (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!

其他的登录用户都能在中断中看到如下的广播消息:

[[email protected] ~]$
Broadcast message from [email protected] (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.

[email protected]#
Broadcast message from [email protected] (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.

[email protected]#
Broadcast message from [email protected] (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 [email protected] (Mon 2018-10-08 06:39:09 EDT):

The system shutdown has been cancelled at Mon 2018-10-08 06:40:09 EDT!

其他的登录用户都能在中断中看到如下的广播消息:

[[email protected] ~]$
Broadcast message from [email protected] (Mon 2018-10-08 06:41:35 EDT):

The system shutdown has been cancelled at Mon 2018-10-08 06:42:35 EDT!

添加时间参数,如果你想在 N 秒之后执行关闭或重启操作。这里,您可以为所有登录用户添加自定义广播消息。例如,我们将在五分钟后重启设备。

# 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 [email protected] (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 机器。它会立即杀死所有进程并且重新启动系统。

# shutdown -r now
  • -r, --reboot: 重启设备。

方案 2:如何通过 reboot 命令关闭和重启 Linux 系统

reboot 命令用于关闭和重启本地或远程设备。reboot 命令拥有两个实用的选项。

它能够优雅的关闭和重启设备(就好像在系统菜单中惦记重启选项一样简单)。

执行不带任何参数的 reboot 命令来重启 Linux 机器。

# reboot

执行带 -p 参数的 reboot 命令来关闭 Linux 机器电源。

# reboot -p
  • -p, --poweroff:调用 haltpoweroff 命令,切断设备电源。

执行带 -f 参数的 reboot 命令来强制重启 Linux 设备(这类似按压机器上的电源键)。

# reboot -f
  • -f, --force:立刻强制中断,切断电源或重启。

方案 3:如何通过 init 命令关闭和重启 Linux 系统

init(“initialization” 的简写)是系统启动的第一个进程。

它将会检查 /etc/inittab 文件并决定 linux 运行级别。同时,允许用户在 Linux 设备上执行关机或重启操作. 这里存在从 06 的七个运行等级。

建议阅读:

执行以下 init 命令关闭系统。

# init 0
  • 0: 停机 – 关闭系统。

运行下面的 init 命令重启设备:

# init 6
  • 6:重启 – 重启设备。

方案 4:如何通过 halt 命令关闭和重启 Linux 系统

halt 命令用来切断电源或关闭远程 Linux 机器或本地主机。 中断所有进程并关闭 cpu。

# halt

方案 5:如何通过 poweroff 命令关闭和重启 Linux 系统

poweroff 命令用来切断电源或关闭远程 Linux 机器或本地主机。 poweroff 很像 halt,但是它可以关闭设备硬件(灯和其他 PC 上的其它东西)。它会给主板发送 ACPI 指令,然后信号发送到电源,切断电源。

# poweroff

方案 6:如何通过 systemctl 命令关闭和重启 Linux 系统

systemd 是一款适用于所有主流 Linux 发型版的全新 init 系统和系统管理器,而不是传统的 SysV init 系统。

systemd 兼容与 SysV 和 LSB 初始化脚本。它能够替代 SysV init 系统。systemd 是内核启动的第一个进程,并持有序号为 1 的进程 PID。

建议阅读:

它是一切进程的父进程,Fedora 15 是第一个适配安装 systemd (替代了 upstart)的发行版。

systemctl 是命令行下管理 systemd 守护进程和服务的主要工具(如 startrestartstopenabledisablereload & status)。

systemd 使用 .service 文件而不是 SysV init 使用的 bash 脚本。 systemd 将所有守护进程归与自身的 Linux cgroups 用户组下,您可以浏览 /cgroup/systemd 文件查看该系统层次等级。

# systemctl halt
# systemctl poweroff
# systemctl reboot
# systemctl suspend
# systemctl hibernate

via: https://www.2daygeek.com/6-commands-to-shutdown-halt-poweroff-reboot-the-linux-system/

作者:Prakash Subramanian 选题:lujun9972 译者:cyleft 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名,而且还可以列出指定日期和时间登录的用户。输出到终端的每一行都包括用户名、会话终端、主机名、会话开始和结束的时间、会话持续的时间。要查看 Linux 或类 UNIX 系统重启和关机的时间和日期,可以使用下面的命令。

  • last 命令
  • who 命令

使用 who 命令来查看系统重新启动的时间/日期

你需要在终端使用 who 命令来打印有哪些人登录了系统,who 命令同时也会显示上次系统启动的时间。使用 last 命令来查看系统重启和关机的日期和时间,运行:

$ who -b

示例输出:

system boot 2017-06-20 17:41

使用 last 命令来查询最近登录到系统的用户和系统重启的时间和日期。输入:

$ last reboot | less

示例输出:

Fig.01: last command in action

或者,尝试输入:

$ last reboot | head -1

示例输出:

reboot system boot 4.9.0-3-amd64 Sat Jul 15 19:19 still running

last 命令通过查看文件 /var/log/wtmp 来显示自 wtmp 文件被创建时的所有登录(和登出)的用户。每当系统重新启动时,这个伪用户 reboot 就会登录。因此,last reboot 命令将会显示自该日志文件被创建以来的所有重启信息。

查看系统上次关机的时间和日期

可以使用下面的命令来显示上次关机的日期和时间:

$ last -x|grep shutdown | head -1

示例输出:

shutdown system down 2.6.15.4 Sun Apr 30 13:31 - 15:08 (01:37)

命令中,

  • -x:显示系统关机和运行等级改变信息

这里是 last 命令的其它的一些选项:

$ last
$ last -x
$ last -x reboot
$ last -x shutdown

示例输出:

Fig.01: How to view last Linux System Reboot Date/Time

查看系统正常的运行时间

评论区的读者建议的另一个命令如下:

$ uptime -s

示例输出:

2017-06-20 17:41:51

OS X/Unix/FreeBSD 查看最近重启和关机时间的命令示例

在终端输入下面的命令:

$ last reboot

在 OS X 示例输出结果如下:

reboot ~ Fri Dec 18 23:58
reboot ~ Mon Dec 14 09:54
reboot ~ Wed Dec 9 23:21
reboot ~ Tue Nov 17 21:52
reboot ~ Tue Nov 17 06:01
reboot ~ Wed Nov 11 12:14
reboot ~ Sat Oct 31 13:40
reboot ~ Wed Oct 28 15:56
reboot ~ Wed Oct 28 11:35
reboot ~ Tue Oct 27 00:00
reboot ~ Sun Oct 18 17:28
reboot ~ Sun Oct 18 17:11
reboot ~ Mon Oct 5 09:35
reboot ~ Sat Oct 3 18:57


wtmp begins Sat Oct 3 18:57

查看关机日期和时间,输入:

$ last shutdown

示例输出:

shutdown ~ Fri Dec 18 23:57
shutdown ~ Mon Dec 14 09:53
shutdown ~ Wed Dec 9 23:20
shutdown ~ Tue Nov 17 14:24
shutdown ~ Mon Nov 16 21:15
shutdown ~ Tue Nov 10 13:15
shutdown ~ Sat Oct 31 13:40
shutdown ~ Wed Oct 28 03:10
shutdown ~ Sun Oct 18 17:27
shutdown ~ Mon Oct 5 09:23


wtmp begins Sat Oct 3 18:57

如何查看是谁重启和关闭机器?

你需要启用 psacct 服务然后运行下面的命令来查看执行过的命令(包括用户名),在终端输入 lastcomm 命令查看信息

# lastcomm userNameHere
# lastcomm commandNameHere
# lastcomm | more
# lastcomm reboot
# lastcomm shutdown
### 或者查看重启和关机时间
# lastcomm | egrep 'reboot|shutdown'

示例输出:

reboot S X root pts/0 0.00 secs Sun Dec 27 23:49
shutdown S root pts/1 0.00 secs Sun Dec 27 23:45

我们可以看到 root 用户在当地时间 12 月 27 日星期二 23:49 在 pts/0 重新启动了机器。

参见

关于作者

作者是 nixCraft 的创立者,同时也是一名经验丰富的系统管理员,也是 Linux,类 Unix 操作系统 shell 脚本的培训师。他曾与全球各行各业的客户工作过,包括 IT,教育,国防和空间研究以及非营利部门等等。你可以在 TwitterFacebookGoogle+ 关注他。


via: https://www.cyberciti.biz/tips/linux-last-reboot-time-and-date-find-out.html

作者:Vivek Gite 译者:amwps290 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我去!又是这样。 我还以为我登录到家里的服务器呢。 结果 重启的居然是数据库服务器。 另外我也有时会在错误终端内输入 “shutdown -h 0” 命令。 我知道有些人 经常会犯这个错误

我的愤怒无从容忍

有办法解决这个问题吗?我真的只能忍受这种随机重启和关机的痛苦吗? 虽说人总是要犯错的,但总不能一错再错吧。

最新我在 tweet 上发了一通牢骚:

我总是一遍又一遍地犯下同样的错误 :( 本来应该输入: sudo virsh reboot d1

却总是输错重启了自己的电脑 sudo reboot d1

-- nixCraft (@nixcraft) February 19,2017

结果收到了一些建议。我们来试一下。

向你引荐 molly guard

Molly-Guard 尝试阻止你不小心关闭或重启 Linux 服务器。它在 Debian/Ubuntu 中的包描述为:

这个包会安装一个 shell 脚本来屏蔽现有的 shutdown/reboot/halt/poweroff/coldreboot/pm-hibernate/pm-suspend* 命令。 molly-gurad 会首先运行一系列的脚本,只有在所有的脚本都返回成功的条件下, 才会调用真正的命令。 其中一个脚本会检查是否存在 SSH 会话。 如果是通过 SSH 会话调用的命令, shell 脚本会提示你输入相关闭主机的名称。 这应该足够防止你发生意外的关机或重启了。

貌似 molly-guard 还是个 专有名词 Jargon File

一种用于防止由于笨拙或者不小心触碰道大红开关的屏障。最初指的临时盖在 IBM 4341 的大红按钮上的有机玻璃,因为有一个程序员蹒跚学步的女儿(名叫 Molly)一天之内重启了它两次。 后来这个东西也被用来盖住磁盘和网络设备上的停止/重启按钮。在硬件目录中,你很少会看到 “guarded button” 这样无趣的描述"。

如何安装 molly guard

使用 apt-get 命令 或者 apt 命令 来搜索并安装 molly-guard:

$ apt search molly-guard
$ sudo apt-get install molly-guard

结果为:

Fig.01: Installing molly guard on Linux

测试一下

输入 reboot 命令shutdown 命令:

$ sudo reboot
# reboot
$ shutdown -h 0
# sudo shutdown -h 0
### running wrong command such as follows instead of
### sudo virsh reboot vm_name_here
$ sudo reboot vm_name_here

结果为:

Fig.02: Molly guard saved my butt ;)

我超级喜欢 molly-guard。因此我将下行内容加入到 apt-debian-ubuntu-common.yml 文件中了:

 - apt:
 name: molly-guard

是的。我使用 Ansible 在所有的 Debian 和 Ubuntu 服务器上都自动安装上它了。

相关我的 10 大 UNIX 命令行错误

如果我的 Linux 发行版或者 Unix 系统(比如 FreeBSD) 没有 molly-guard 怎么办呢?

不用怕,设置 shell 别名

## bash shell example ###
alias reboot = "echo 'Are you sure?' If so, run /sbin/reboot"
alias shutdown = "echo 'Are you sure?' If so, run /sbin/shutdown"

你也可以 临时取消别名机制运行真正的命令。比如要运行 reboot 可以这样:

# \reboot

或者

# /sbin/reboot

另外你也可以写一个 shell/perl/python 脚本来调用这些命令并要求 确认 reboot/halt/shutdown 的选项。


via: https://www.cyberciti.biz/hardware/how-to-protects-linux-and-unix-machines-from-accidental-shutdownsreboots-with-molly-guard/

作者:Vivek Gite 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在Linux里,由于对安全的考虑,我们允许任何人按下Ctrl-Alt-Del重启系统。但是在生产环境中,应该停用按下Ctrl-Alt-Del 重启系统的功能。

在这篇文章里,我们将要介绍如何在RHEL和CentOS下停用该热键。

在RHEL 5.X和CentOS 5.X下

保护init进程免于Ctrl-Alt-Del,像下面一样编辑'/etc/inittab'里由'ca::ctrlaltdel:'开头的一行:

[root@localhost ~]# cat /etc/inittab
# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

我们还可以改变'ca::ctrlaltdel:'这行来输出日志 ,如果任何人想用该热键重启服务器,就会有日志,

[root@localhost ~]# cat /etc/inittab
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/bin/logger -p authpriv.warning -t init "Console-invoked Ctrl-Alt-Del was ignored"

在RHEL6.X和CentOS 6.X下

在RHEL6.X和CentOS 6.X下, 该热键的行为由'/etc/init/control-alt-delete.conf'控制.

第一步 在变化之前,先用下列命令备份配置

[root@localhost ~]# cp -v /etc/init/control-alt-delete.conf /etc/init/control-alt-delete.override

第二步编辑文件,把'exec /sbin/shutdown'这一行用下方配置代替,这个配置会在每次按下Ctrl-Alt-Del 时输出日志:

[root@localhost ~]# cat /etc/init/control-alt-delete.conf
exec /usr/bin/logger -p authpriv.notice -t init "Ctrl-Alt-Del was pressed and ignored" 

via: http://www.linuxtechi.com/disable-reboot-using-ctrl-alt-del-keys/

作者:Pradeep Kumar 译者:2q1w2007 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

问题: 是否有一个命令可以快速地检查系统已经运行了多久? 也就是我怎么知道Linux系统最后的重启时间?

有许多方法来查询系统最后的重启时间。

方法一

第一种方法是使用last命令。

$ last reboot 

这条命令实际上显示的是最近几天的系统运行时间。last原本被设计来显示某个特定用户的登录历史。在Linux中,有一个特别的“伪用户”称为reboot会在系统重启的时候立即自动登录。这样通过检查reboot用户的登录历史,你就可以检查最后的重启时间。

方法二

另外一个检测系统最后启动时间的方法是使用who命令带上‘-b’选项。

$ who -b 

方法三

你同样可以使用uptime命令来推断系统最后的启动时间。uptime命令会显示当前的时间,同样也会显示系统已经运行的时间。从这些信息中,你就可以计算系统最后启动的时间了

$ uptime 


via: http://ask.xmodulo.com/check-last-time-system-rebooted-linux.html

译者:geekpi 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出

对于 Ubuntu 新手来说,有很多新东西要学,但是网上很多教程不是针对新手的。

在这里,我们不走寻常路。不能说全部的教程都是为初学者准备,但至少大部分是。

这篇文章也是一篇新手教程,并且展示如何在每次执行关机、重启、注销时禁用确定框。

Ubuntu 总是配置好了一个对话框,每当你要关机、重启或者注销时提示你。

这是一个保护措施,防止你本不打算这样做却错误关机或重启。

不是所有人都想每次关机的时候被询问。忙碌的小伙伴们可能就让自己的电脑那么醒着,因为他执行了关闭命令,却忘了确认那个该死的对话框。

这个教程将会指导你每一次关机的时候如何避免那个对话框。

当这个特性被激活,你将会收到下面的提示。

Are you sure you want to close all programs and shutdown your computer?

运行下面命令关掉它。

按下键盘上的 Ctrl – Alt – T 打开终端。然后敲击下面的命令

gsettings set com.canonical.indicator.session suppress-logout-restart-shutdown true

就这么简单,你再也不会被该死的确认对话框骚扰了。

如果想恢复这个对话框,敲下面的命令就可以了

gsettings set com.canonical.indicator.session suppress-logout-restart-shutdown false


via: http://www.liberiangeek.net/2014/01/daily-ubuntu-tips-turn-off-shutdown-restart-confirmation-in-ubuntu/

译者:ggaaooppeenngg 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出