linux重启的详细程序

时间:2012-04-18 22:29:30

标签: linux linux-kernel system-calls reboot

我对如何在Linux中实施重启感兴趣。当我按ctrl-alt-del或点击"重启"在菜单栏中,接下来会发生什么?

谢谢!

3 个答案:

答案 0 :(得分:1)

以安全的方式关闭系统。系统将通知所有已登录的用户系统正在关闭,并且登录(1)被阻止。可以立即关闭系统或在指定的延迟后关闭系统。首先通过信号SIGTERM通知所有进程系统正在关闭。 它通过发信号通知init进程,要求它改变运行级别来完成它的工作。运行级别0用于暂停系统,运行级别6用于重启系统,运行级别1用于将系统置于可以执行管理任务的状态; 所以基本上重启会调用“关机”。

答案 1 :(得分:0)

快速回答是/etc/rc6.d中的所有脚本都已执行。

以“K”开头的脚本使用“stop”参数执行。 以“S”开头的脚本使用“start”参数执行。

有关详情,您可以在此处开始阅读有关运行级别的信息:http://en.wikipedia.org/wiki/Runlevel

答案 2 :(得分:0)

Linux上有不同的init系统,它们还控制重启/关闭时发生的事情。请参阅https://unix.stackexchange.com/questions/18209/detect-init-system-using-the-shell以告知您使用的是哪个。

如果您正在使用SysVinit,则会有一个runlevel与整体系统状态相关联。 init系统将首先运行与当前运行级别关联的所有kill脚本,然后运行与运行级别6关联的启动脚本。如果当前运行级别为5,则运行/etc/rc5.d/K*,然后运行/ etc / rc6 .D / S *。它们可能位于另一个目录中,例如/etc/init.d/rc5.d/k*,具体取决于您的Linux发行版。

如果您正在使用systemd,那么将有一个已定义目标和服务的列表,而不是整体“运行级别”。目标列表基本上是运行级别。这些是在/ etc / systemd下的.service和.target文件中定义的。可能会在那里定义“rebo​​ot.target”,其他依赖于它的服务将在重新启动时运行。有关示例,请参阅the systemd homepage或此stackexchange question

一些Ubuntu版本也使用upstart,但我认为它已在更新版本中被systemd取代。如果您使用的是暴发版,请参阅this guidethis askubuntu question

要注意的一点是,无论您使用哪个init系统,都可能使用通常与另一个相关联的init脚本。所以你可能正在使用sysVinit,但是一些rc * .d脚本可能是调用systemd脚本的东西的链接。或相反亦然。