Second-study-oF-Linux

 · 2020-5-25 · 次阅读


0X00 前言

再次复习Linux的目的:很多东西是我认为我掌握了,我认为我吃透了,都是我认为,但实际上是没有的。
因而没有完全吃透,完全消化的东西,就需要不断的,不断的咀嚼,总会将其吃透。
因而不断复习以前学过的知识,温故而知新,是很有必要的。

然后更重要的原因买了三个月腾讯云试试水,顺便学习Linux了。

0X01 Linux系统启动

Linux的启动有五个阶段:

  • 内核的引导
  • 运行init
  • 系统初始化
  • 建立终端
  • 用户登录系统
    init程序的类型:
  • SysV:init,CentOS 5之前,配置文件:/etc/inittab
  • Upstart:initCentOS6 配置文件 :/etc/inittab,/etc/init/*.conf
  • Systemd: systemd CentOS7配置文件:/usr/lib/system/system、/etc/systemd/system

内核引导

计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
操作系统接管硬件以后,首先读入/boot目录下的内核文件。 这里提到了boot文件,其实就是系统引导文件。引导系统开机的。

运行init

init进程是系统所有进程的起点,可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动,init进程首先是需要读取配置文件/etc/inittab

运行级别

许多程序需要开机启动,在Windows中他们叫做服务(service),而在Linux中叫做守护进程(daemon)。 init进程的一大任务,就是去运行开机启动的程序。

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

Linux系统有7个运行级别:

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

系统初始化/h3> 在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脚本。

建立终端

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

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

用户登录系统

用户登录有三种:

  1. 命令行登录
  2. ssh登录
  3. 图形化界面登录

Linux的账号验证程序是login,文本登录下,login会接受minegetty传来的用户名作为用户名参数。
如果不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,并退出。
这也是防止非root用户登录。
只有在/etc/securetty中登记了的终端才允许root用户登录。
如果不存在,则root可以在任何终端上登录。
/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。
整个操作系统的启动过程:

Linux关机

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

关机指令为:shutdown
不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。
关机的命令有shutdown -h now halt poweroff和init 0,重启系统的命令有
shutdown -f now reboot init 6

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