Linux关键文件解读(二)
一、Linux运行级别
1.介绍
init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序。init程序需要读取配置文件/etc/inittab
。inittab是一个不可执行的文本文件,它有若干行指令所组成。需要注意的是该文件在centos6.x操作系统中是生效的,但是在centos7.x操作系统中已经不生效了。我们仅以此来了解一下Linux操作系统的运行级别。
Linux系统的运行级别是指系统启动时各个服务的运行状态,也可以理解为系统的工作状态。 Linux系统共有7个运行级别,每个运行级别都有不同的服务和进程运行。
1.运行级别(0):系统停机状态。该级别下,系统已关闭所有服务并停止运行。在该级别下,用户不能登录系统。通常,系统在关机前会自动进入该级别。
2.运行级别(1):单用户模式。该级别下,系统只允许一个用户登录,并且只有最基本的服务启动,例如文件系统和网络服务。该级别用于系统维护和修复。
3.运行级别(2):多用户模式,没有网络支持。该级别下,系统启动所有基本服务,但没有网络支持。该级别用于维护系统或者在多用户环境下进行故障排除。
4.运行级别(3):完全多用户模式。该级别下,系统启动所有基本服务和网络支持,并且可以支持多个用户同时登录。该级别通常用于服务器环境。
5.运行级别(4):未使用,保留待开发。该级别保留给用户自定义。
6.运行级别(5):图形界面模式。该级别下,系统启动所有基本服务、网络支持和图形界面。该级别通常用于桌面环境。
7.运行级别(6):系统重启状态。该级别下,系统关闭所有服务并重新启动。在该级别下,用户不能登录系统。通常,系统在重启前会自动进入该级别。
关于运行的使用方法,我们通常只做了解,操作如查看当前系统默认运行级别:runlevel
;关机:init 0
;重启:init 6
。
2.单用户模式修改密码
重启linux系统,3 秒之内要按一下回车,进入grub菜单
按 e进入编辑模式 ……
详细参考👉Linux 忘记密码解决方法
二、虚拟文件系统目录文件
Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件。
1.系统的软硬件信息
在Linux系统中,提供了proc文件系统显示系统的软硬件信息。如果想了解系统中CPU的提供商和相关配置信息,则可以通过/proc/cpuinfo文件得到。
processor :系统中逻辑处理核的编号。对于单核处理器,则可认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
vendor_id :CPU制造商,这里是英特尔
cpu family :CPU产品家族代号
model :CPU型号代号
model name:CPU属于的名字及其编号、标称主频
stepping :CPU的工艺步进编号
microcode : 处理器微代码
cpu MHz :CPU的实际使用主频
cache size :CPU二级缓存大小
physical id :CPU物理封装的序号
siblings :单个CPU逻辑处理器数量,相当于线程数。
core id :当前物理核在其所处CPU中的编号,这个编号不一定连续
cpu cores :该逻辑核所处CPU的物理核数
apicid :用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu :是否具有浮点运算单元(Floating Point Unit)
fpu_exception :是否支持浮点计算异常
cpuid level :执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags :当前CPU支持的功能
bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size :每次刷新缓存的大小单位
cache_alignment :缓存地址对齐单位
address sizes :可访问地址空间位数
power management :对电源管理的支持
查看CPU信息命令:lscpu
1 | 我们只需要会看cpu个数和核心数即可 |
知识补充
CPU个数即CPU芯片个数;CPU的核心数是指物理上,也就是硬件上存在着几个核心。CPU的内核是运算器和控制器,多核CPU可以增强并行处理能力,可以一次处理多个线程。如果把CPU比作一个工厂,那么核心数就是工厂里面的工人数量。
2.kernel内存管理
/proc/meminfo是了解Linux系统内存状态的主要接口,里面统计了当前系统各类内存的使用状况,需要注意的是:这是从内核的角度来统计。我们常用的free,vmstat等指令都是通过/proc/meminfo来获取数据,并返还给指令输入者。/proc/meminfo统计的是系统全局的内存使用状况,如果需要看单个进程的内存情况可以在/proc/
查看内存信息:
1 | [root@oldboy ~]# cat /proc/meminfo |
/proc/meminfo下详细参数介绍可参考➡️meminfo下参数介绍-CSDN博客
3.平均负载
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:1、它没有在等待I/O操作的结果;2、它没有主动进入等待状态(也就是没有调用’wait’) 3、没有被停止(例如:等待终止)。关于系统平均负载的信息被存放在loadavg文件中。
1 | 查看平均负载信息: |
在Linux系统中,uptime、w、top等命令都会有系统平均负载load average的输出,下面分别做解释:
w命令是Linux系统中的一个实用工具,用于显示当前系统上登录的用户信息。它提供了关于每个用户的详细信息,包括登录名、终端、登录时间、运行时间和所执行的命令。
在Linux系统中top命令是常用的分析性能的工具,能够实时监控系统中各个进程资源占用的情况,这和windows中任务管理器有点类似。
第一行,任务队列信息,同 uptime 命令的执行结果:
系统时间:07:27:05
运行时间:up 1:57 min,
当前登录用户: 3 user
负载均衡(uptime) load average: 0.00, 0.00, 0.00
average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
第二行,Tasks — 任务(进程)
总进程:150 total, 运行:1 running, 休眠:149 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie
第三行,cpu状态信息
0.0%us【user space】— 用户空间占用CPU的百分比。
0.3%sy【sysctl】— 内核空间占用CPU的百分比。
0.0%ni【】— 改变过优先级的进程占用CPU的百分比
99.7%id【idolt】— 空闲CPU百分比
0.0%wa【wait】— IO等待占用CPU的百分比
0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比
0.0%si【Software Interrupts】— 软中断占用CPU的百分比
第四行,内存状态
1003020k total, 234464k used, 777824k free, 24084k buffers【缓存的内存量】
第五行,swap交换分区信息
2031612k total, 536k used, 2031076k free, 505864k cached【缓冲的交换区总量】
第七行以下:各进程(任务)的状态监控
PID — 进程idUSER — 进程所有者PR — 进程优先级NI — nice值。负值表示高优先级,正值表示低优先级VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESRES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATASHR — 共享内存大小,单位kbS —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程%CPU — 上次更新到现在的CPU时间占用百分比%MEM — 进程使用的物理内存百分比TIME+ — 进程使用的CPU时间总计,单位1/100秒COMMAND — 进程名称(命令名/命令行)
uptime 用于显示系统总共运行了多长时间和系统的平均负载。
命令显示依次为:当前时间、系统已经运行了多长时间、目前有多少用户登录、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。输出结果等同于 top 命令汇总区的第一行。
三、系统硬件挂载
1.挂载的概念
Linux只有一个根目录(/),只能访问到属于根目录下的文件,而当文件不在根目录下时,如何才能访问呢??处理方式就是“挂载”!!即为将该文件关联到根目录下的某个目录,这种关联就是“挂载(mount)”,关联到的目录也就是“挂载点”,当我们要解除这种关联的操作就叫“卸载(umount)”。Linux操作系统硬件只有挂载才可以访问里面的内容。
还记得吗,在安装虚拟机的时候我们按照标准卷管理,把空间分成了三个区:/boot、swap、/
虽然boot在根/目录下,但它指向的是/boot分区,我们实际是在/分区下访问的/boot目录不在/分区内。
2.查看硬件信息
查看当前系统的挂载信息:cat /proc/mounts
iso9660是不是很熟悉,没错,这就是我之前挂载的光盘镜像文件。
显示当前系统中全部块设备信息:(名称、UUID、文件系统类型等)
1 | [root@hostlocal ~]# blkid |
查看磁盘信息:
1 | [root@hostlocal ~]# df -h |
3.挂载的使用
1 | 第一步: 插入镜像文件到光驱 |
需要强调的是mount的挂载是临时的,关机之后就没有了,如果要一直进行挂载的话,可以用到我们前面学过的fstab文件或者rc.local文件。
1 | 开机自动挂载 |
注意
du命令 – 查看文件或目录的大小
1 | [root@hostlocal ~]# echo helloworld > 1.txt |
du命令来自英文词组“Disk Usage”的缩写,其功能是用于查看文件或目录的大小。人们经常会把df和du命令混淆,df是用于查看磁盘或分区使用情况的命令,而du命令则是用于按照指定容量单位来查看文件或目录在磁盘中的占用情况。du 的常用选项参数有:
参数 | 释义 |
---|---|
-a | 显示目录中所有文件大小 |
-h | 使用易读方式显示文件大小 |
-k | 使用KB为单位显示文件大小 |
-m | 使用MB为单位显示文件大小 |
-g | 使用GB为单位显示文件大小 |
-s | 显示子目录总大小 |
-c | 显示占用磁盘空间大小总和 |
四、系统日志分析
1.基础命令
先简单的讲几个我们在分析日志时可能用到的命令
命令 | 参数 | 语法 |
---|---|---|
wc | -c :统计字节数。 -l :统计行数。 -m:统计字符数 -w: 统计字数。 |
wc [options] [file] |
head | -n:读取显示前n行内容 | head -n [file] |
tail | -n:读取显示后n行内容 -f:不退出文件实时显示最新的内容 -F:文件不存在会监控文件直到存在则实时监控最新的日志 |
tail -n [file] |
sed | -n:使用安静(silent)模式,列出处理的行 | sed -n ‘100,200p’ filename |
grep | -n:显示匹配行和行号 -i:不区分大小写 -v :排除匹配结果 -c :只统计匹配的行数 |
grep [options] [pattern] [file] |
还有一个超级便利的神器,管道符"|",它的使用类似于and运算。将管道符与各种命令相结合,不难想象他们之间一定会绽放绚烂的火花。
2.系统日志文件
1 | 文件位置:`/var/log/messages` |
3.系统安全日志
1 | 文件位置:`/var/log/secure` |