为什么我们需要在不同的二进制文件中重新启动功能?
shutdown -r
和
reboot
还是它们在某些方面有所不同?
为什么我们需要在不同的二进制文件中重新启动功能?
shutdown -r
和
reboot
还是它们在某些方面有所不同?
Answers:
我们不一定都需要它们,但是由于Unix的历史以及版本的多样性,我们都需要它们。
从各自的手册页:
关闭功能更通用,功能更强大,而重新启动则更友好,更容易记住。
shutdown使您可以指定一个时间参数(例如,在5分钟内重新启动),并允许您除了重新启动之外还做很多事情,包括:
但是,如果您只想立即重新引导系统,则键入reboot
比起来容易shutdown -r now
。
shutdown
现在默认使用某些版本。shutdown -h
永远不要试图获取帮助以寻求帮助,尤其是不要在数据中心内的服务器上。
这两个命令的功能有所不同,但是它们最终可能会互相调用,这就是为什么它们似乎做同样的事情!
reboot
将调用内核以实际触发硬件重启。但是,只有在系统准备关闭时才执行此操作-应该停止所有守护程序和用户进程,卸载文件系统等。因此,它将检查系统运行级别,如果它不是0或6,则它将实际调用shutdown
给您的命令。
shutdown
导致更改系统运行级别。运行级别更改(暂停为0或重新引导为6)在/etc/rc0.d或rc6.d中运行了许多脚本,这些脚本关闭了守护程序,卸载文件系统等。最后,这些脚本调用halt
或reboot
-这次系统处于正确的运行级别,它们指示内核重新引导(或停止)。
除了iconoclast编写的内容之外,这两个程序之间还有一个重要的区别:shutdown
在中/sbin
,而reboot
在中/usr/bin
。
你问为什么这很重要?我会告诉你。
/usr
在系统启动足够远以至于系统无法正常工作之前,下面的内容是不需要的。那些传统上从未安装在单独的文件系统顶级目录- ,,/bin
等-预计可在系统达到这一最低限度可使用状态。这种设计有多种含义。例如,如果或中存在替代项,则编写使用程序的SysV初始化脚本的“ stop”子句是一种不好的风格。/etc
/sbin
/usr/bin
/bin
/sbin
shutdown
是关键实用程序,始终可用。reboot
仅是一种便利工具。
reboot
是在/sbin
Debian中(带的SysVinit)和Ubuntu(与暴发户)。