引言

《Linux启动之旅》中,我们了解了Linux的启动过程,下面我们一同来学习Linux关机与重新引导流程。

不同于桌面系统,作为服务器,我们较少对Linux系统进行系统重启,但在以下情形出现时,我们会对机器进行重启:

  • 更换硬件
  • 更改系统配置
  • 系统僵死,需要重启恢复

关闭和重启系统方式

引导系统本质上只能用一种方法,与此不同的是,关闭或重新引导系统有多种方法:

  1. 关闭电源(下电)
  2. 使用shutdown命令
  3. 使用halt、poweroff或reboot命令
  4. 使用telinit改变init运行级别

关闭电源

基于以下两点原因,直接对机器下电,并不是一种好的习惯:

  1. 可能导致硬件损坏
  2. 部分数据可能仍在内存,未被写回磁盘,这时下电会丢失数据或造成文件系统损害;

因而尽量使用其他方式关闭或重新引导系统。

shutdown命令

使用shutdown可以挂起(halt)或重启(reboot)系统,使用-h选项指示挂起系统,起到与halt命令相同的作用;使用-r选项指示重启系统,起到与reboot命令相同的作用。

执行shutdown命令后,系统将向所有登陆用户发送挂起或重启消息。

执行shutdown –h now后发送挂起消息:

# shutdown -h now
Broadcast message  :: ):
The system is going down for system halt NOW!
INIT:
INIT: Sending processes the TERM signal

执行shutdown –r now后发送重启消息:

# shutdown -r now
Broadcast message  :: ):
The system is going down for system reboot NOW!
INIT:
INIT: Sending processes the TERM signal

执行shutdown后,其他用户不能再登入系统,另我们可以指定系统挂起或重启的时间以及说明,如下两例:

凌晨1::00停机维护:

shutdown –h : “going down  hour.”

指定相对关机时间15分钟后关机:

shutdown –h + “going down for emergency check.”

halt和reboot命令

halt记录关机情况,终止非必要进程,执行sync系统调用,等待文件系统写操作完成,然后停止内核,poweroff命令等价于halt。

从以上”shutdown –h”和”shutdown –r”执行输出可知,执行halt即进入运行级别0,执行reboot即进入运行级别6,日志文件/var/log/messages中会记录相应日志。

系统重启日志:

May   :: slot14 shutdown[]: shutting down for system reboot
May   :: slot14 init: Switching to runlevel:
May   :: slot14 user_cmd: -- :: shutdown -r now by root  :]

系统挂起日志:

May   :: slot14 shutdown[]: shutting down for system halt
May   :: slot14 init: Switching to runlevel:
May   :: slot14 user_cmd: -- :: shutdown -h now by root  :]

通过查看/var/log/messages日志记录,可判断机器是无端重启还是人为地重启。

telinit命令

执行telinit命令可以指引init进入指定的运行级别,如重启系统:

#telinit 

使用telinit时,不会得到像执行shutdown那样友好的警告信息,较少用作挂起和重启命令,不过进行/etc/inittab文件的修改测试,使用该命令比较方便。

小结

对于承载已上线业务的服务器,重启系统是比较大的动作。当操作系统相关故障发生时,我们应先考虑收集日志信息,必要时再进行系统重启。

Linux系统关机与重新引导流程简介的更多相关文章

  1. 【Android 系统开发】 Android 系统启动流程简介

    作者 : 万境绝尘 (octopus_truth@163.com) 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/3889548 ...

  2. Linux系统初始化过程及运行级别简介

    Linux开机过程: 1 开机自检(BIOS):初始化硬件,查找启动介质 2 MBR引导 3 GRUB引导菜单:GRUB程序安装在Bootloader 4 加载内核(kernel) 5 运行INIT进 ...

  3. linux系统关机与重新启动命令

    在linux下关机和重新启动系统有shutdown.halt.reboot.init,对于他们来说他们的内部工作过程是不同样的. 1.shutdown命令 使用它能够安全地关闭系统.然而在关闭系统时. ...

  4. Linux系统 关机/重启/用户切换/注销,用户管理(用户创建/修改,用户组增加/删除),Linux中 / 和 ~ 的区别

    1.关机/重启命令 shutdown命令 shutdown -h now :立即关机 shutdown -h 1 :1分钟后关机 shutdown -r now :立即重启 shutdown -r 1 ...

  5. 【Linux 运维】linux系统关机、重启、注销命令

    linux 关机.重启.注销命令: 关机命令: shutdown -h now 立刻关机(生产常用) shutdown -h  +1  一分钟后关机      (    shutdown -c 可以将 ...

  6. laravel项目使用appnode部署linux系统到阿里云服务器流程记录(待补充)

    使用 SSH 连接工具,如 PuTTY.XShell.SecureCRT 等,连接 Linux 服务器后(阿里云服务器命令行内直接输入appnode安装命令,版本:mysql选5.7.php选7.2) ...

  7. Linux—系统关机命令详解

    不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中.将数据由内存同步写入到硬盘中. [root@localhost ~]# sync 一.shutdown命令 # 立刻关 ...

  8. 装机预备技能,Linux系统简介,安装Linux系统,Linux基本操作-云计算学习(2)

    装机预备技能 问题 要求安装一台可用的KVM服务器: RHEL与CentOS系统有什么关联? Linux系统中第三块SCSI硬盘如何表示? 步骤 实现此案例需要按照如下步骤进行. 步骤一:RHEL系统 ...

  9. Linux系统运行级与启动机制剖析

    原文作者:技术成就梦想 原文链接:http://ixdba.blog.51cto.com/2895551/533740 一 系统运行级windows系统有安全运行模式和正常运行模式,这是两个不同的运行 ...

随机推荐

  1. Cow Exhibition POJ - 2184

    题目地址:https://vjudge.net/problem/POJ-2184 下面的解释是从一个大佬那搬来的,讲的很清楚题意:给定一些奶牛,每个牛有s和f两个属性值,有正有负,要求选出一些牛,使得 ...

  2. 内核下载、nfs挂载:个性问题及解决方法~~共勉

    开发板下载内核遇到starting waiting问题时: 首先想到是下载地址的问题! 将原本下载地址减去0X40,例如:smart210下载地址0X20008000,修改为0X20007FC0,即可 ...

  3. vim /home/yuanyc/.bashrc export LC_ALL=zh_CN.UTF-8

    vim /home/yuanyc/.bashrc export LC_ALL=zh_CN.UTF-8

  4. [leetcode] 392. Is Subsequence (Medium)

    原题 判断子序列 /** * @param {string} s * @param {string} t * @return {boolean} */ var isSubsequence = func ...

  5. 关于页面scroolTop的获取

    scroolTop 发现问题 获取页面滚动高度的时候: 当html页面设置了DTD<!DOCTYPE html> document.body.scroolTop // 值总是为0: doc ...

  6. 转载——Asp.Net MVC+EF+三层架构的完整搭建过程

    转载http://www.cnblogs.com/zzqvq/p/5816091.html Asp.Net MVC+EF+三层架构的完整搭建过程 架构图: 使用的数据库: 一张公司的员工信息表,测试数 ...

  7. JAVA面试题 String s = new String("xyz");产生了几个对象?

    面试官Q1:请问String s = new String("xyz");产生了几个对象? 对于这个Java面试题,老套路先上代码: public class StringTest ...

  8. php--学习封装类 (一)(操作mysql数据库的数据访问)

    <?php class DBDA //定义一个类 { //定义成员变量,不能直接定义,前面要加上public或者是private public $host = "localhost&q ...

  9. memset函数怎么用嘞↓↓↓

    1.我也曾天真的以为 memset(a,0,sizeof(a))中的0可以用任意数替换 实际上这是错误的 memset的功能是将一快内存中的内容以单个字节逐个拷贝的方式放到指定的内存中去. 2.介绍几 ...

  10. JAVA遍历机制的性能的比较

        本文首发于cartoon的博客     转载请注明出处:https://cartoonyu.github.io/cartoon-blog/post/java/java%E9%81%8D%E5% ...