(*长期更新)软考网络工程师学习笔记——Section 11 Linux操作系统简介

简介: (*长期更新)软考网络工程师学习笔记——Section 11 Linux操作系统简介

前言


注:本栏目教程使用虚拟机软件的是VMware Workstation Pro 15.5.6 build-16341506,映像文件是CentOS-7-x86_64-DVD-1611。


虚拟机配置环境如下:

1667141755428.jpg


一、Linux 操作系统


Linux是一种免费且开源的类UNIX操作系统,继承UNIX的设计风格演变出来的多用户、多任务、支持多线程和多CPU的操作系统,以下是CentOS 7的页面:

1667141772824.jpg

实际上,CentOS它是一种Linux操作系统的发行版,可以说是以Linux为核心的操作系统软件包,除了CentOS还有RedHat、Ubuntu、Slackware、SUSE、veket等等,它们都是Linux内核加上外围实用程序组成的一个大的软件包。


(一)Linux 组成部分


Linux操作系统由四大主要部分组成:

1667141798126.jpg

1、Linux 内核

内核是Linux操作系统的核心,它提供了操作系统最基本的功能,例如支持虚拟内存、多任务、共享库、可执行程序和TCP/IP网络等等。

Linux内核中的模块可分为:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信、系统的初始化和系统调用等。

2、Linux Shell

Shell作为Linux操作系统的一种用户界面,用于与用户进行交互,为用户提供使用操作系统的接口,它有以下两大功能特点:

①Shell是一个命令解释器,拥有自己内建的Shell命令集;

②Shell它本身就是一种解释型的程序设计语言。


例如,CentOS中Shell进程提供了命令提示符,其中Shell对普通用户以$作为提示符,对超级用户(root)以#作为提示符,如下命令通过su root然后输入密码进入特权root模式:

[yyx@192 ~]$ 
[yyx@192 ~]$ su root
密码:
[root@192 yyx]#


在Linux终端输入命令:

1667141817473.jpg

这里的[yyx@192 ~]$ 其中的~符号表示用户的home目录,我们可以通过pwd命令(用于显示当前目录)和cd命令(用于切换目录)来理解其结构,如下命令:

[yyx@yyx12 ~]$ pwd
...
[yyx@yyx12 ~]$ cd ..
[yyx@yyx12 home]$ cd ..


在Linux终端输入命令,可看到进入终端处于[yyx@192 ~]$ 默认目录下,此时的当前目录为/home/yyx也就是用户目录,这里的/home是用户主目录,用于存放系统中普通用户的宿主目录,即一个与用户名同名的目录,这里存放的用户名称为/yyx的同名目录;另外我们通过cd …命令切换目录至当前目录的上一级目录(父目录),可验证/yyx位于/home目录下,然后再进行切换,则返回到根目录/下:

1667141859995.jpg

3、Linux 文件系统

文件系统是文件存放在磁盘等存储设备上的组织方法,是文件数据的集合,并且包括文件系统的结构,Linux支持目前流行的多种文件系统,如EXT2、EXT3、FAT、FAT32、VFAT和ISO 9660等等。

4、Linux 应用程序

标准的Linux操作系统一般都有一套称为应用程序的程序集,包括编辑器、编程语言、X Window、办公套件、Internet工具和数据库等等。


(二)Linux 操作系统的特点


Linux操作系统相比于其它操作系统,它具有以下主要特征:

1、开放性

2、多用户

3、多任务

4、良好的用户界面

5、设备独立性

6、提供了丰富的网络功能

7、可靠的安全系统

8、良好的可移植性


二、Linux 文件系统


(一)文件系统的定义


在操作系统中与管理文件有关的软件和数据称为文件系统,其作用是为用户建立、撤销、读写、修改和复制文件,并且还负责完成对文件按名存取和进行存取控制。


(二)Linux 文件与进程


在Linux操作系统中,可以这样来定义文件与进程,所有静态的对象都属于文件,所有动态的对象都属于进程。在Linux操作系统中运行的程序可以称为进程,文件是数据的集合,是文件系统中存储数据的对象,而进程是运行于其虚拟地址空间的程序。


前面说过Linux是一个多用户、多任务、支持多线程和多CPU的操作系统,即它是一个多进程的操作系统,每个进程都有自己的权限和任务,且进程的失败不会互相影响。

另外Linux中有三种类型的进程,分为交互进程、批处理进程和守护进程,如下:

1667141894986.jpg

交互进程是由Shell控制和运行的,它既可以在前台运行也可以在后台运行;批处理进程不属于某个终端,被提交到一个队列中以便顺序运行;守护进程是在需要时被唤起后在后台运行,一般在Linux启动时开始运行。


(三)绝对路径和相对路径


绝对路径和相对路径很容易理解,只需根据该路径是否从根目录“/”写起分辩,绝对路径是完整的描述文件位置的路径,它是从盘符(根目录)开始写起的路径;而相对路径可以理解为不从根目录写起的目录,如下例:

1667141943904.jpg

例如通过cd命令(用于切换目录),分别通过绝对路径和相对路径方式切换至/home目录下。

(1)相对路径方式,起始点以当前工作目录开始,如下命令:

[yyx@yyx12 ~]$ cd /
[yyx@yyx12 /]$ cd home


在Linux终端中输入命令,如下:

1667141964004.jpg

(2)绝对路径方式,起始点从根目录 / 开始,如下命令:

[yyx@yyx12 ~]$ cd /home


在Linux终端中输入命令,如下:

1667141982130.jpg


(四)Linux 文件系统的树状结构


Linux文件系统采用树状结构来管理文件,每个文件的顶级目录为根目录“/”,根目录通过一个斜线表示(类似于Windows操作系统的“C:\“),在根目录 / 之下的既可以是一个目录,也可以是一个文件,且每一个目录中又可以包含子目录文件,从而构成整个Linux文件系统,如下图:

1667142000839.jpg

1、当前目录和父目录

在Linux文件系统中有两个特殊的目录:一个是用户所在的工作目录,也叫当前目录,通过使用.来表示,也可以使用./来表示;另一个是当前目录的上一级目录,也叫父目录,通过使用..来表示,也可以使用../来表示。

2、隐藏目录或文件

以“.”开头的目录或文件名为隐藏目录或文件,当以默认方式查找时,不会显示该目录或文件。

如下当我们通过ls命令默认访问,不带参数查看文件和目录信息以及通过ls -a显示隐藏目录或文件:

ls
ls -a


在终端中输入命令,如下:

1667142019271.jpg

具体的Linux相关命令将在后续的文章中介绍到,这里只是简单了解一下。


(五)Linux 主要目录及作用


在桌面点击“home”主文件夹,然后点击计算机,可看到一些主要的目录如下:

1667142029878.jpg

或者通过ls /命令显示目录:

ls /


在Linux终端中输入命令,如下:

1667142050809.jpg

这里只介绍主要的目录作用,如下表:

目录名称 作用
/ 根目录
/boot 包含操作系统的内核以及系统启动时所需读取的核心文件
/root 超级用户的本地目录
/home 用户主目录,存放系统中普通用户的宿主目录,即一个与用户名同名的目录
/tmp 临时目录,存放命令程序临时使用的文件
/usr 存放应用程序和文件 ,用于存放次重要的分级文件系统的目录
/var 存放系统专用数据和配置文件,即经常变化的文件(例如日志文件、用户邮件等)
/dev 存放终端和磁盘等外部设备文件(例如打印机、光盘驱动、硬盘等)
/etc 存放系统中管理和维护的配置文件
/bin 存放二进制可执行文件 ,它存放着最经常使用的命令
/sbin 通常也是存放二进制可执行文件 ,它存放的是系统管理员使用的系统管理程序
/mnt 外接设备的挂载点,外接设备需挂载在该目录下才能访问(例如U盘等)
/opt 存放附加软件包的目录
/proc 存放核心和进程信息虚拟文件系统的目录


(六)Linux 设备文件


Linux中只有文件的概念,系统中每一个硬件设备都映射到一个文件上,即对设备的处理简化为对文件的处理,该类文件称为设备文件。

1667142156737.jpg

系统中第一个IDE设备指定为hda,随后第二个IDE设备指定为hdb,第一个SCSI设备指定为sda,随后第二个SCSI设备指定为sdb,依次……


(七)Linux 文件的分类


Linux文件系统中的文件大致可分为以下七类:

1、普通文件

根据存放内容的不同,可将普通文件分为纯文本文件(ASCII)和纯二进制文件(binary)。

2、目录文件

目录文件是一种特殊的文件,通过cd命令可进入相应的目录。

例如以下命令:

[yyx@192 ~]$ cd /home
[yyx@192 home]$ cd /tmp
[yyx@192 tmp]$ cd /var/log
[yyx@192 log]$


在Linux终端输入命令:

1667142187991.jpg

3、块设备文件

是存储数据以供系统存取的接口设备在上层的表现形式,以块(1024byte)为单位来操作数据,这里的设备也就是硬盘、U盘等等。

4、字符设备文件

是字符设备驱动程序在上层的表现形式,即串行端口的接口设备,例如键盘、鼠标等等。

5、套接字文件

该文件用于网络通信,通过启动一个程序来监听客户端的要求,从而客户端就可以通过套接字来进行数据通信。

6、管道文件

用于实现不同进程(程序)之间的通信,它是操作系统提供的一种纯代码层面的通信机制。

7、链接文件

相当于一种快捷图标,指向另一个文件,链接文件分为符号链接文件(软链接文件)和硬链接文件。


三、Linux 分区管理


(一)主分区和扩展分区


主分区的作用是使计算机系统可以

操作系统的分区,每一个操作系统的启动引导程序都存放在主分区上。

Linux规定在一个硬盘设备中主分区和扩展分区最多能有4个,系统分配1⁓16的序列号码来区分硬盘上的各分区,例如一个IDE硬盘的第一个分区用hda1表示,第二个分区用hda2表示,依次……表示。


Linux至少需要两个特有的分区类型Linux Native主分区和Linux Swap交换分区,通常在Linux中安装Linux Native硬盘分区,分区类型规定在此分区上文件系统的格式。


(二)磁盘分区格式


Linux常见的分区格式如下:

名称 解释
ext 扩展文件系统,它拥有最快的速度和最小的CPU占用率
ext2 第二代扩展文件系统,它的速度和CPU利用率表现突出,是目前Linux文件系统类型中使用最多的格式
ext3 第三代扩展文件系统,是一种日志式文件系统,它是在ext2的基础上添加了记录元数据的日志功能
ISO 9660 CD-ROM文件系统,是一种基于光盘的标准文件系统
NFS 网络文件系统,允许多台PC共享一个文件系统,易于从所有计算机上存取文件
HPFS 高性能文件系统


四、Linux 系统运行级别


Linux操作系统中当前正在运行的功能级别称为运行级别,共七个,即0~6共七个运行级别,每个级别对应不同的功能,init程序(系统的第一个进程,是所有进程的发起者和控制者)通过寻找initab文件来使相应的运行级别有相应的功能。

标准的Linux的运行级别为3或5,以下是七个运行级别及其对应的功能,:


运行级别 解释

运行级别 解释
运行级别0 停机状态,机器是关闭的
运行级别1 单用户工作状态,仅有root权限,用于系统维护,不能远程登陆 (类似于Windows的安全模式)
运行级别2 多用户状态,不支持NFS,也不支持网络功能
运行级别3 完整的多用户状态,支持NFS,可以使用控制台命令行模式
运行级别4 未使用,作为保留
运行级别5 X11控制台,桌面模式,登录后进入图形用户页面X Windows模式
运行级别6 系统正常关闭并重启


注:网络文件系统(NFS)是文件系统之上的一个网络抽象,来允许远程客户端以与本地文件系统类似的方式,来通过网络进行访问。


五、Linux 系统启动过程


Linux系统启动过程分为五个阶段:

1667142482141.jpg


(一)引导加载程序


首先从硬盘引导操作系统,由Linux中的引导加载程序GRUB和LILO读取硬盘主引导记录(MBR)中的信息(每个MBR中只能存储一个操作系统的引导记录)。

1667142498988.jpg


(二)加载内核


内核映像不是一个可执行内核,它是一个经压缩过的内核映像,将其加载到内存后内核开始执行。


(三)运行init进程


在内核引导后开始加载init进程,init进程完成系统的初始化工作并维护系统的各种运行级别。

init进程有两个作用:

1、终结父进程,系统总以init进程为参照;

2、进入某个特定的运行级别时运行相应的程序,并对各种运行级别进行管理。


(四)系统初始化


init进程根据/etc/inittab文件进行系统初始化,这里以RedHat Linux为例,主要介绍它的系统初始化步骤,如下:

1、执行/etc/rc.d/rc.sysinit

init首先执行的脚本,它主要完成各个不同运行级别中相同部分的初始化工作,包括设置初始的$PATH变量、配置网络等等;

2、执行/etc/rc.d/rcx.d/下的脚本

在系统初始化时选择性地执行系统目录/etc/rc.d/init.d下的服务器脚本程序的一部分,在/etc/rc.d目录下有七个名为rcx.d(x代表不同运行级别的级别数)的目录,对应系统运行级别的七个运行级别,这些脚本实际上都是连接文件,而不是真正的rc启动脚本;

1667142641918.jpg


脚本程序的连接文件命名规则为K/S+xx+服务名的形式,其中S表示启动,K表示结束,K开头的命令脚本程序会传递Stop参数,而S开头的命令脚本程序会传递Start参数,xx是一个两位数字。


命令脚本程序的执行顺序:首先终止K开头的服务,然后启动S开头的服务,再根据S或K后面xx两位数字的大小来决定执行顺序,数值小的先执行;

3、执行/etc/rc.d/rc.local/

RedHat Linux中的运行模式2、3、5都会将/etc/rc.d/rc.local/作为最后一个运行的初始化脚本(可以在这个文件中添加脚本指令,从而实现在系统开机后自动运行某个程序或执行某项常规操作的功能);


(五)执行/bin/login(用户登录)


login程序检验用户的输入账号和密码,若通过则为使用者进行初始化环境,并将控制权交给shell,从而等待用户登录,启动过程完成。

1667142751460.jpg


六、Linux 守护进程


Linux中每个服务都有一个对应的守护进程,守护进程通常在系统引导时自动启动,在系统关闭时终止,在后台运行时不受任何终端控制,平时也没有一个程序界面与之对应。

以下是常见的守护进程:

进程名称 解释
dhcpd 动态主机控制协议的服务守护进程
crond 负责周期性地运行用户调度的任务
httpd Web服务器Apache守护进程
iptables iptables防火墙守护进程
named DNS(BIND)服务器守护进程
pppoe ADSL连接守护进程
sendmail 邮件服务器sendmail守护进程
smb Samba文件共享/打印服务守护进程
snmpd 简单网络管理守护进程
squid 代理服务器squid守护进程
sshd SSH服务器守护进程


七、Linux 常见配置文件


(一)/etc/sysconfig/network 配置文件


/etc/sysconfig目录下存放的都是与系统配置相关的文件,/etc/sysconfig/network下用于存放系统的基本网络信息,如计算机名、默认网关等等。


(二)ifcfg-ethx 配置文件


配置文件位于/etc/sysconfig/networking/ifcfg-ethx中,用于存放系统eth接口的IP配置信息,其中ifcfg-ethx的x值可以为0或1,代表不同的网卡接口。在一般情况下,系统默认读取/etc/sysconfig/network为默认网关,若不生效,则检查配置文件内容是否正确,其次检查相应的网卡接口ifcfg-ethx中是否设置了GATEWAY=,若设置了则会以该为默认网关。


(三)/etc/host.conf 配置文件


用于保存系统解析主机名或域名的解析顺序,在网络环境中使用计算机名或域名时,系统首先会去/etc/host.conf 配置文件中寻找配置,确定解析主机名的顺序。


(四)/etc/hosts 配置文件


用于存放系统中的IP地址和主机对应关系的一个表,如下通过cat命令查看/etc/hosts 配置文件:

[yyx@yyx12 ~]$ cat /etc/hosts


在Linux终端输入命令:

1667142912944.jpg


(五)/etc/resolv.conf 配置文件


用于存放DNS客户端配置文件,通过vi命令可以显示该配置文件设置的本机的DNS服务器:

vi /etc/resolv.conf


在终端中输入命令,如下:

1667142934772.jpg

然后回车键,即可显示该配置文件设置的本机系统的DNS服务器地址:

1667142945912.jpg


例如在Linux系统中,DNS查询文件内容如下:

Search domain.test.cn
Nameserver 210.34.0.14
Nameserver 210.34.0.15
Nameserver 210.34.0.16
Nameserver 210.34.0.17


可知,该文件的默认存储位置为/etc/resolv.conf ,当用户作DNS查询时,首选DNS服务器的IP地址为210.34.0.14。


相关文章
|
1天前
|
存储 Shell Linux
操作系统实战(一)(linux+C语言)
本篇文章重点在于利用linux系统的完成操作系统的实验,巩固课堂知识
|
1天前
|
Linux Shell
Linux操作系统下查找大文件或目录的技巧
Linux操作系统下查找大文件或目录的技巧
|
2天前
|
算法 Ubuntu Linux
为什么Linux不是实时操作系统
本文探讨了Linux为何不是实时操作系统(RTOS)。实时性关乎系统对事件的确定性响应时间,而Linux虽能保证调度执行的实时任务,但无法确保中断响应时间、中断处理时间和任务调度时间的确定性。中断响应时间受中断屏蔽时间影响,Linux中无法确保;中断处理时间因不支持中断嵌套而不确定;任务调度时间虽快,但调度点的限制影响实时性。Linux的定位是通用操作系统,追求平均性能而非绝对实时性。为改善实时性,Linux提供了不同抢占模型,如可抢占内核(Low-Latency Desktop)和PREEMPT-RT补丁,后者接近硬实时但牺牲了吞吐量。PREEMPT-RT正逐渐成为Linux实时增强的标准。
9 1
为什么Linux不是实时操作系统
|
2天前
|
存储 Ubuntu Linux
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
Xenomai是一个实时性解决方案,通过在Linux上添加实时内核Cobalt来增强实时性能。它有三个主要部分:libcobalt(用户空间实时库)、Cobalt(内核空间实时内核)和硬件架构特定层(ipipe-core或dovetail)。ipipe-core适用于Linux 5.4以下版本,而dovetail用于5.4及以上版本。本文介绍了在X86 Ubuntu环境下,如何编译Xenomai内核,搭建应用环境,包括配置、编译、安装和实时性测试。对于其他硬件架构,如ARM和ARM64,步骤类似。文章还提到了Xenomai与Linux内核版本的兼容性和实时性测试结果。
11 0
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
|
2天前
|
消息中间件 测试技术 Linux
linux实时操作系统xenomai x86平台基准测试(benchmark)
本文是关于Xenomai实时操作系统的基准测试,旨在评估其在低端x86平台上的性能。测试模仿了VxWorks的方法,关注CPU结构、指令集等因素对系统服务耗时的影响。测试项目包括信号量、互斥量、消息队列、任务切换等,通过比较操作前后的时戳来测量耗时,并排除中断和上下文切换的干扰。测试结果显示了各项操作的最小、平均和最大耗时,为程序优化提供参考。注意,所有数据基于特定硬件环境,测试用例使用Alchemy API编写。
9 0
linux实时操作系统xenomai x86平台基准测试(benchmark)
|
3天前
|
域名解析 网络协议 Linux
linux网络配置详解
linux网络配置详解
13 0
|
4天前
|
网络协议 Java Linux
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
11 0
|
4天前
|
存储 网络协议 算法
【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
11 0
|
4天前
|
网络协议 算法 Linux
【探索Linux】P.27(网络编程套接字 —— UDP协议介绍 | TCP协议介绍 | UDP 和 TCP 的异同)
【探索Linux】P.27(网络编程套接字 —— UDP协议介绍 | TCP协议介绍 | UDP 和 TCP 的异同)
14 0
|
13天前
|
监控 安全 Linux
【专栏】Linux中六个常用的网络命令:ping、traceroute、netstat、nmap、ifconfig和ip
【4月更文挑战第28天】本文介绍了Linux中六个常用的网络命令:ping、traceroute、netstat、nmap、ifconfig和ip,以及它们在测试网络连通性、追踪路由、查看网络状态、安全扫描和接口配置等场景的应用。通过学习和运用这些命令,系统管理员和网络爱好者能更有效地诊断和管理网络问题,确保网络稳定运行。