linux教程——1.启动过程

Linux 系统启动过程

linux启动时我们会看到许多启动信息。

Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:

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

内核引导

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

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

bg2013081702

运行init

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

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

bg2013081703

运行级别

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

init进程的一大任务,就是去运行这些开机启动的程序。

但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。

Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。

bg2013081704

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是每一个运行级别都要首先运行的重要脚本。

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

l5:5:wait:/etc/rc.d/rc 5

这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。

而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。

/etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的连接文件,对于以以S开头的启动脚本,将以start参数来运行。

而如果发现存在相应的脚本也存在K打头的连接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。

这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。

至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的"System Services"来自行设定。

bg2013081705

建立终端

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

init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。

同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。


用户登录系统

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

  • (1)命令行登录
  • (2)ssh登录
  • (3)图形界面登录
bg2013081706

对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入KDE、Gnome等窗口管理器。

而本文主要讲的还是文本方式登录的情况:当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了。

Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。

然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。

这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。

/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。


图形模式与文字模式的切换方式

Linux预设提供了六个命令窗口终端机让我们来登录。

默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 … tty6,你可以按下Ctrl + Alt + F1 ~ F6 来切换它们。

如果你安装了图形界面,默认情况下是进入图形界面的,此时你就可以按Ctrl + Alt + F1 ~ F6来进入其中一个命令窗口界面。

当你进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了。

如果你用的vmware 虚拟机,命令窗口切换的快捷键为 Alt + Space + F1~F6. 如果你在图形界面下请按Alt + Shift + Ctrl + F1~F6 切换至命令窗口。

bg2013081707

Linux 关机

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

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

关机指令为:shutdown ,你可以man shutdown 来看一下帮助文档。

例如你可以运行如下命令关机:

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命令,把内存中的数据写到磁盘中。

关机的命令有 shutdown –h now halt poweroff 和 init 0 , 重启系统的命令有 shutdown –r now reboot init 6.

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
用一种分布式处理方法 挖掘分布式系统检测到的事件联系   点击下载演示文档 abstract: 现在,对监控、分析和控制大规模分布式系统的需求越来越高涨。监控下的事件往往呈现出相关联的关系,这对资源分配、工作调度还有故障预测有很大帮助。为了发现在检测到的事件中的联系,很多已有的方法是把被检测事件放到数据库中并对其进行数据挖掘。但是我们认为这些方法并不适合大规模分布式系统,因为监控事件的数据量增长得非常快以至于很难用一台计算机的力量来进行事件之间联系的发现。在本文中,我们提出了一种分布式的方法有效地检测事件

OSGI中Declarative Services的运用 - 2016-07-23 14:07:48

OSGI中Declarative Services的运用 前言 Declarative Services,即所谓的声明式服务,我在前文中曾经提及到注册式服务与声明式服务,但是在前文中并没有提及怎么使用声明式服务,只是简单的说了下概念和相对于blueprint来说有哪些优缺点,总而言之,可谓是一笔带过,这几日想起这个,还是决定需要仔细的讲一下声明式服务。 简介 Declarative Services,这是在OSGi 4以后的规范中出现的,在这里引用一段其他人说的话,Declarative Services
        我们都希望,配置文件是从一个服务引出,然后客户端监听服务端变化,实时重启自身加载最新配置,这样,我们就不用维护每个独立的客户端配置,更新也变得非常简单,而flume,显然意识到了这一个巨大的实惠,他是支持配置文件交由zookeeper维护的,这样我们在修改配置时,flume会自动重新加载。 1,zookeeper 添加节点         我们利用博客《 使用zkweb维护zookeeper数据 》中介绍的软件,编辑某一个随意路径,用于盛放我们的配置,路径如下: 2,flume 配置zk端
Spring MVC + mybatis实现的注册登录 前期准备:            如下图所示,准备好所需要的包, 新建工程,导入所需要的包,在web.xml中配置好所需要的,如下, ?xml version="1.0" encoding="UTF-8"?web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance http://ww
工欲善其事,必先利其器。对于程序员来说,Eclipse便是其中的一个“器”。本文会从Eclipse快捷键和实用技巧这两个篇章展开介绍。Eclipse快捷键用熟后,不用鼠标,便可进行编程开发,避免鼠标分了你的神。而掌握了Eclipse的一些实用技巧,则可以大大提高开发效率。 1、丢掉鼠标吧之Eclipse快捷键篇 1.1文件切换的三种方式 1.1.1  Ctrl + E,在右边显示出当前打开的所有文件 1.1.2 Ctrl + Pg Up ,Ctrl + Pg Dn ,逐个文件跳跃 按下Ctrl + Pg
前言 想必HDFS集群的起停操作对于HDFS的使用者来说绝对不是一件陌生的事情.一般情况下我们重启集群服务是出于这2点原因:1).集群新增配置项,需要重启集群服务才能生效.2).对集群相关jar包程序进行了更新,需要重启服务来运行最新的jar包.于是我们重启了集群,一般的我们看它是否启动成功,一定会关注它的输出日志.比如说在HDFS中,我们会比较关注NameNode的启动日志.当然这的确是一个有效的办法,但是我们是否有其他更方便快捷的方法呢?比如说我不想登到NameNode所在节点上去看日志.最后的答案是
1、前言 进入 云计算 的时代,各大云提供商AWS, 阿里云 纷纷推出针对 Docker 的服务,现在Docker是十分火爆,那么Docker到底是什麽,让我们来体验一下。 2、Docker是什麽 Docker是一个开源的应用容器引擎,可以把应用以及依赖包放到一个可移植的容器中,然后发布到任何流行的  Linux  系统上,通过这种方式实现虚拟化。 提到虚拟化,大家应该十分熟悉了,有 VMware ,Xen, KVM 等等很多。那么,Docker和VM有什么不同呢,我们用官网的一张图来说明一下。 可以看出

MAT使用的几张图例技巧 - 2016-07-23 14:07:57

1 下面三个是内存泄漏可能性比较大的地方  problem suspect 1 problem suspect 2 点击detail 可以看详细  如果发现里面有自己工程包里面的重复的大量对象的创建 2 在dominator_tree 可以对象按照 group by package 分类 便于查看那部分代码出问题 如果自己的工程包下面占用了大量内存 可能就是问题所在 问题一般可能出在 占用最多的地方 3  选中一个节点 右键查看with incoming reference 可以看  ps :( List
重点发掘自己每天是否有学到或者感受到新东西,一旦可以感知这些细节,那么心态就会平和、也更容易坚持下来,自然而然就可以等到突破瓶颈的时候。 时间是一个很公平的东西,去体验不同的岗位去寻找自己真正想做的,是一个不错的思路。最怕的是目的性不明确的变化。 事实上那怕我们专注于一个领域,在某些时候还要跳出这个领域,开眼界后再回归方能更上一层楼。 ——祝晓春 手工测试二三事   @ 安琪儿的梦 o_0   提问:一直做手工测试会不会没有前 途 ? 任何一个工作和岗位都会有前途的,但是并不是每个人都会达到很大的高度。关

Spring+SpringMVC+Mybatis整合笔记 - 2016-07-22 22:07:05

出于兴趣,最近在研究SSM,参考着别人的技术资料并结合实际情况,一步一步的跑通了SSM整合的整个过程,现整理如下,希望对于同样对SSM有兴趣的你有所帮助,当然,因本人能力有限,可能有些问题,希望您能够指出来,咱们一起学习进步。   主要技术点: l  Spring + SpringMVC + Mybatis的整合 l  使用maven管理jar包及版本 l  使用mybatis generator代码生成器自动生成代码 l  使用SpringJUnit4ClassRunner进行单元测试   主要配置环境