Chinaunix首页 | 论坛 | 博客
  • 博客访问: 483522
  • 博文数量: 28
  • 博客积分: 858
  • 博客等级: 一等列兵
  • 技术积分: 852
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-02 14:13
文章分类

全部博文(28)

文章存档

2020年(1)

2019年(1)

2018年(5)

2017年(1)

2014年(1)

2013年(2)

2012年(17)

分类: LINUX

2012-12-19 10:23:21

    自己做的系统碰到了一个问题,我的系统上面运行着monit和heartbeat,monit监控heartbeat的状态,当heartbeat进程出现问题的时候,monit会重新拉起heartbeat。这本来是一个perfect的功能,但是当重启时,heartbeat早于monit关闭,此时heartbeat又被拉起,导致heartbeat双方通信出现问题。下面分析下系统关机的过程,并验证下解决问题的推断。
  1. 验证用户身份
      只有root用户才可以执行关机或者重启命令,所以关机检查当前用户是不是超级用户。
      

点击(此处)折叠或打开

  1. bash-3.2$ id
  2. uid=502(com) gid=502(com) groups=502(com),503(piduser)
  3. bash-3.2$ /sbin/shutdown -h now
  4. shutdown: you must be root to do that!
     这里我们明显看到只有root用户才可以执行这条命令
  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. 完成关机。
阅读(6332) | 评论(0) | 转发(0) |
0

上一篇:Python 大杂烩

下一篇:linux 命令大杂烩

给主人留下些什么吧!~~