一、启动过程
Linux的启动过程大体有以下6个步骤:
1️⃣内核引导
2️⃣运行init
3️⃣根据RunLevel开启守护线程
4️⃣系统初始化
5️⃣建立终端
6️⃣用户登录系统
1、内核引导
接通电源后进行BIOS自检,按照BIOS中设置的启动设备(通常是硬盘)来启动,操作系统接管硬件以后,首先读入 /boot 目录下的内核文件
2、运行init
init进程可以看做是系统的入口,通过它来唤醒其他的服务。init 进程是系统所有进程的起点,你可以把它比拟成系统中所有进程的祖宗,没有这个进程,系统中任何进程都无法启动。init 程序首先会读取配置文件 /etc/inittab,该配置文件的内容只有一句话:定义了初始化时系统的运行级别
3、根据运行级别开启守护进程
许多程序需要开机启动。它们在Windows中叫做"服务"(service),在Linux中叫做"守护进程"(daemon)。init进程的一大任务,就是去运行这些开机启动的程序。但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
Linux中有7个运行级别(runlevel):即 /etc/inittab 中写的那7个
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录,我们大多数情况下都是需要远程登录的,因此也不会设置为1
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式,我们通常会设置为该级别
运行级别4:系统未使用,保留
运行级别5:X11控制台,登录后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
4、系统初始化
在init的配置文件中有这么一行:
si::sysinit:/etc/rc.d/rc.sysinit
表示调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本,它主要完成的工作有:激活交换分区、检查磁盘、加载硬件模块以及其它一些需要优先执行的任务
5、建立终端
rc执行完毕后,返回init。这时系统基本环境已经设置好了,各种守护进程也已经启动了。init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义的6个终端
6、用户登录系统
一般来说,用户的登录方式有三种:
1)命令行登录
2)ssh远程登录:通过SecureCRT等远程登录
3)图形界面登录 启动过程流程图:
二、关机
Linux大多用作服务器,很少需要关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机 。
正确的关机流程为:sync > shutdown > reboot > halt
1️⃣sync:将数据由内存同步到硬盘中
2️⃣shutdown:关机
shutdown –h 10 #计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中
shutdown –h now #立马关机
shutdown –r now #系统立马重启
3️⃣reboot:重启,等同于 shutdown –r now
4️⃣halt:关闭系统,等同于shutdown –h now 和 poweroff
不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。图形化界面关机的时候不必再执行sync命令:直接点击系统->关机即可
三、密码重置
忘记root密码怎么办?重新安装系统吗?当然不用!进入单用户模式更改一下root的密码即可。
①重启Linux,见到下图,在3秒钟之内按下回车
②三秒之内按下回车后,出现如下界面
③按下e键就可以进入下图
④移动到下一行,再次按e键
⑤移动到下一行,进行修改:切换为单用户模式
修改完成后回车键,然后按b键进行重新启动进入系统
⑥移动到下一行,进行修改
输入passwd进行密码重置
修改完密码,reboot一下即可四、Linux的终端
Linux下有6个终端(终端和运行级别是风马牛不相及的两个概念)和一个图形化界面,可使用快捷键ctrl+alt+F1、ctrl+alt+F2、ctrl+alt+F3、ctrl+alt+F4、ctrl+alt+F5、ctrl+alt+F6、ctrl+alt+F7(图形化界面)这7组快捷键分别调出对应一种终端
注意
:在切换到另一个终端之前最好输入exit命令退出当前终端,否则多个终端同时运行,会消耗资源
我们可以使用 who 命令查看连接到服务器的终端,在需要踢人(比如该客户端死机或者中毒时)的时候,可以先用who来查看这个人是否连接在了服务端
Linux系统设计多个终端的原因:如果只有一个终端,该终端死机时就无法通过其他终端来挽救;而有多个终端时在一个终端死机或者有其他问题不能正常退出时,可以通过另外一个终端将其终止,这样既可以保证服务器的正常运行,也能解决终端的问题
当一个终端出现问题的时候的解决方式(踢人):假如图形化界面中的gedit a.txt命令执行时卡死了
①使用命令:ps -ef|grep gedit查看所有的执行gedit命令的终端
②执行kill命令将不能正常执行的命令杀死
③再回到图形化界面就会看到命令已被杀死
Linux中有那么多终端,为什么一开机就进入图形化界面呢?(有时不是一开机就进入图形化界面,跟配置文件有关)这跟/etc/inittab的配置有关,通过查看这个文件可以看出默认的初始化等级是5,即图形化界面