一、Linux系统的组成

  • linux内核(linus 团队管理)
  • shell:用户与内核交互的接口
  • 文件系统:ext3、ext4等。windows 有 fat32 、ntfs
  • 第三方应用软件

二、Linux 系统启动过程

  过程可以分为5个阶段:

  • 内核的引导。
  • 运行 init。
  • 系统初始化。
  • 建立终端 。
  • 用户登录系统。

一、内核引导

  当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。

  操作系统接管硬件以后,首先读入 /boot 目录下的内核文件

二、运行init

  init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。

  init 程序首先是需要读取配置文件 /etc/inittab

运行级别

  定义:Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。

  许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。

  也就是说,启动时根据"运行级别",确定要运行哪些程序。

  Linux系统有7个运行级别(runlevel):

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
  • 运行级别2:多用户状态(没有NFS)
  • 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
  • 运行级别4:系统未使用,保留
  • 运行级别5:X11控制台,登陆后进入图形GUI模式
  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

三、系统初始化

  在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。

  PS:真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。

  主要完成的工作:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

四、建立终端

  rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。

五、用户登录系统

  一般来说,用户的登录方式有三种:

  • 命令行登录
  • ssh登录
  • 图形界面登录

六、总结

  • 1、读入 /boot 目录下的内核文件(内核引导)
  • 2、init 程序读取配置文件 /etc/inittab(运行init)
  • 3、调用/etc/rc.d/rc.sysinit(初始化系统)
  • 4、建立终端让用户登录(建立终端)
  • 5、用户登录系统(用户登录)

三、Linux 系统关机

  在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

  正确的关机流程为:sync > shutdown > reboot > halt

  相关命令参考:

sync 将数据由内存同步到硬盘中。

shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:

shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。

shutdown –h now 立马关机

shutdown –h 20:25 系统会在今天20:25关机

shutdown –h +10 十分钟后关机

shutdown –r now 系统立马重启

shutdown –r +10 系统十分钟后重启

reboot 就是重启,等同于 shutdown –r now

halt 关闭系统,等同于shutdown –h now 和 poweroff

总结:不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。

最新文章

  1. DotNetBar for Windows Forms 12.1.0.0_冰河之刃重打包版 原创发布
  2. 自定义easyui整数或者数字、字母或者下划线验证方法
  3. Ubuntu14.04下安装tomcat
  4. HTML常用标签与表格标签
  5. [Effective JavaScript 笔记]第41条:将原型视为实现细节
  6. http://my.oschina.net/u/719192/blog/506062?p={{page}}
  7. Linux同步时间命令ntpdate
  8. java byte 16进制转换
  9. BZOJ 2732 射箭
  10. HDU 1027 Ignatius and the Princess II 选择序列题解
  11. [转]Running JavaScript in an iOS application with JavaScriptCore
  12. 挖一挖不常用到而又很实用的重载-Split
  13. Https网络安全架构设计
  14. mysql链接服务器,update报错
  15. Andrew NG 机器学习编程作业6 Octave
  16. [转]awsome-java
  17. 请允许我转载一篇关于套接字的博客:Socket
  18. 物联网架构成长之路(5)-EMQ插件配置
  19. tf.nn.embedding_lookup
  20. Android开发——进程间通信之Messenger

热门文章

  1. 【Spring】Spring如何实现多数据源读写分离?这是我看过最详细的一篇!!
  2. 手把手教Linux驱动2-之模块参数和符号导出
  3. consul、eureka、nacos对比
  4. CentOS 6.x/7.x上安装git
  5. JDK、JRE与JVM之间的关系
  6. 焦大:以后seo排名核心是用户需求点的挖掘
  7. 牛哄哄的celery
  8. 屏幕适配 部分知识点总结,CSDN小冰原创
  9. 面试【JAVA基础】Web与网络
  10. observeParents的使用