Lan*_*nes 12 linux shutdown history
为什么我们需要在不同的二进制文件中重启功能?
shutdown -r
Run Code Online (Sandbox Code Playgroud)
和
reboot
Run Code Online (Sandbox Code Playgroud)
或者他们有什么不同?
ico*_*ast 15
我们不一定同时需要它们,但由于 Unix 的历史及其版本的多样性,我们同时拥有它们。
从他们各自的手册页:
shutdown 更通用,更强大,而 reboot 更友好,更容易记住。
shutdown 允许您指定时间参数(例如,在 5 分钟后重新启动)并允许您执行除重新启动之外的许多操作,包括:
但是,如果您现在只想重新启动系统,则键入reboot
比shutdown -r now
.
除了 iconoclast 所写的内容之外,这两个程序之间还有一个重要的区别:shutdown
is in /sbin
, while reboot
is in /usr/bin
。
你问为什么这很重要?我会告诉你。
下面的内容/usr
是在系统启动到足以使系统功能最低限度之前不必可用的内容。那些传统上从未安装在单独的文件系统顶级目录- ,,等-预计可在系统达到这一最低限度可使用状态。这种设计有多种含义;例如,如果在或 中有替代方案,则编写使用程序的 SysV init 脚本的“停止”子句是一种糟糕的风格。/bin
/etc
/sbin
/usr/bin
/bin
/sbin
shutdown
是关键实用程序,始终可用。reboot
只是一个方便实用程序。
这两个命令执行不同的操作,但是它们最终可能会相互调用,这就是为什么它们似乎执行相同的操作!
reboot
将调用内核以实际触发硬件重启。但是,它只会在系统准备好关闭时执行此操作 - 所有守护进程和用户进程都应该停止,文件系统卸载等。因此它检查系统运行级别,如果它不是 0 或 6,那么它实际上会调用shutdown
给你的命令。
shutdown
导致系统运行级别改变。运行级别更改(更改为 0 表示暂停或 6 表示重启)在 /etc/rc0.d 或 rc6.d 中运行大量脚本,这些脚本关闭守护程序、卸载文件系统等。最后这些脚本调用halt
或reboot
- 这次系统处于正确的运行级别,它们指示内核重新启动(或停止)。