关闭Linux系统时,遵循正确的过程是很重要的。否则,文件系统可能成为废物,文件可能变成杂乱的。 这是因为Linux使用磁盘缓存,并不立即将数据写到磁盘,而是间歇地回写。 这极大地改善了性能,但同时也意味着如果你只是关闭电源,cache可能保留着大量数据,而磁盘上的数据可能不是一个 全部的正在工作的文件系统(因为有些数据已经回写到硬盘,而有些没有)。
另一个不能直接关闭电源的原因是:在多任务系统中,后台可能运行着很多东西,关闭电源可能损失惨重。 使用正确的关机顺序,可以保证所有的后台进程得以保存他们的数据。
正常关闭Linux系统的命令是shutdown 。 它通常使用2种方法之一。
如果系统只有你一个用户,使用shutdown 的通常方法是退出所有运行程序, 从所有虚拟控制台注销,用root登录(如果你已经是root,当然不必再注销、登录,但应该换到 根目录,以免由于unmount出现问题),然后运行命令shutdown -h now (虽然单用户时一般不必要,但如果需要一个延时,用一个加号加一个表示分钟的数目代替now)
如果系统是多用户,使用命令shutdown -h +time message, time是到系统停止的分钟数,message是告知所有用户系统关机原因的短信息。
# shutdown -h +10 'We will install a new disk. System should上面的命令警告所有用户,系统将在10分钟后关闭,他们最好保存信息,否则将丢失。 警告将显示在所有登录的终端上,包括所有的xterm 上:
> be back on-line in three hours.'
#
Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 1995...警告在系统关闭前将自动重复数遍,随着时间流逝,间隔越来越短。
We will install a new disk. System should
be back on-line in three hours.
The system is going DOWN for system halt in 10 minutes !!
当延时之后关闭系统真正开始时,所有文件系统(除了根)被unmount,所有用户进程(如果有人还未注销)被终止, 守侯进程被关闭,所有东西都停下来。此后,init 打印出一条信息告知 你可以关掉电源了。此时,也只有在此时,你才可以关闭电源。
有时(虽然在任何好的系统上极少),系统可能不能正常关闭。例如,核心紊乱、崩溃等不正常情况,可能无法键入任何命令, 因此正常关机可能有些困难,这是只能直接关机。问题可能没那么严重,比如,有人误动了你的键盘,核心和update 程序还在正常运行,等待一些时间可能是个好建议,这能使update 有机会将缓冲cache 中的数据回存硬盘,然后再直接关机。
有人喜欢用sync 三遍来关闭系统,等到磁盘I/O停止,然后在关闭电源。如果没有什么程序运行着,这和用shutdown 等效。 然而,它不unmount任何文件系统,可能导致ext2fs的"干净文件系统"标志出问题。这种3遍sync的方法是不推荐使用的。
(In case you're wondering: the reason for three syncs is that in the early days of UNIX, when the commands were typed separately, that usually gave sufficient time for most disk I/O to be finished.)