- 验证用户身份
只有root用户才可以执行关机或者重启命令,所以关机检查当前用户是不是超级用户。
点击(此处)折叠或打开
- bash-3.2$ id
- uid=502(com) gid=502(com) groups=502(com),503(piduser)
- bash-3.2$ /sbin/shutdown -h now
- shutdown: you must be root to do that!
2. 解析命令行参数
这里我们只分析shutdown -r now 这条命令
这里的-r设置downlevel 为6
0是关机,6是重启
3. 检查关机命令是否在运行
4. 生成关机pid,在/var/run/shutdwon.pid
5. 忽略系统信号
6. 执行关机
在/var/log/messages我们可以看到这条日志shutting down for system reboot,说明系统开始执行关机流程了。
7. 执行init
关掉/etc/rc6.d下面以k开头的进程,然后执行kill -1 SIGTERM,最后执行kill -1 SIGILL
8. 完成关机。