六个关机命令之间的关系(3)

  三、Shutdown命令分析。

  因为Linux系统是一个多用户系统。在同一个时间内可能有多个用户登录在这个系统上。如通过SSH命令进行远程登录等等。那么系统管理员可能希望在关闭Linux系统之前给当前所有的登录用户发出警告。或者说在十分钟后关闭系统等等。如果系统管理员要实现这个功能,就需要采用shutdown这个关机命令。

  shutdown 命令可以安全地关闭或重启Linux系统。这个命令会在系统关闭之前给系统上的所有登录用户(包括远程登录的用户)提示一条警告信息。该命令还允许系统管理员指定一个时间参数,在规定的时间后关闭系统。如可以是一个精确的时间(几时几分),也可以是从现在开始的一个时间段(十分钟后)。利用这个命令系统所有进程都将接收到 SIGTERM信号。这有一个好处。它可以使vi等文本编辑程序有时间将处于编辑状态的文件进行存储。邮件和新闻等应用程序进程则可以将所有缓冲池内的数据进行适当的清除等等。故这是一个十分人性化的关机命令。系统管理员运行shutdown命令后,系统会通知init进程,要求它改换运行级别来实现特定的功能。运行级别0用来关闭系统,运行级别6用来重启系统,运行级别1用来使系统进入执行系统管理任务状态。如果没有给出 -h 或 -r 参数时,这是shutdown命令的默认工作状态。系统执行该命令后,会自动进行数据同步的工作。故这个命令的所花费的时间可能要久一点。不过如果考虑数据同步的话,那么管理员等这么一段时间也是值得的。

  这里提到了一个运行级别的概念,它也是Linux系统与Windows系统差异比较大的一个点。所谓运行级别是一种系统软件环境配置。在某个特定的环境中只允许某一组选定的进程存在。init 给不同的运行级别派生的进程。Init可以启动到8个不同的运行级别上,包括0-6运行级别和S或s运行级别。运行级别可以由超级用户通过telinit命令来转换。此命令可以将转换信号传递给init,告诉它切换到哪个运行级别。运行级别0,1,和 6为系统保留的专用运行级别。运行级别0用来关机,运行级别6用来重启,运行级别1用来使计算机进入单用户模式。运行级别S不是给我们直接使用的,更多是为进入运行级别1时运行某些可执行脚本时被调用。

  在这个命令中,加入不同的参数可以实现不同的目的。如shutdown –k命令,并不是真正关机﹐而只是发送警告信号给每位登录者(包括远程登录的用户)。系统管理员在关机系统之前,先利用这个命令告知其他登录的用户,是一个不错的做法。另外,有时候Linux系统也会像Windows系统一样,在系统关闭后并没有主动关闭电源。此时可以采用这个命令shutdown –h,明确指示系统在关机后同时关闭电源。需要注意的是,这个命令与halt关机命令一样,会调用getuid系统进程来判断当前用户是否为root用户。如果是的话,则继续后面的关机动作;如果当前用户为普通用户,则直接退出这个命令。

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/28732.html