文件系统介绍 根目录结构及其功能 系统目录结构:
目录 内容 bin 目录全称(binary) 存放二进制命令文件(普通用户可以使用) sbin 目录存放二进制命令文件(root用户可以使用) etc 目录存放软件程序或系统程序配置文件 lib 目录会存放需要调取库文件信息 旧软件程序调取库文件 lib64 目录会存放需要调取库文件信息 新软件程序调取库文件 media 可以存放实例视频或图片 可以用于作为默认挂载点 mnt 可以用于作为默认挂载点 opt 目录存放第三方软件程序数据 等价于Windows program files usr 目录存放第三方软件程序数据 等价于Windows program files root 用户信息存放家目录 root用户的家 ~ home 用户信息存放家目录 普通用户的家~ boot 目录存放系统启动相关的数据 dev 目录会存放一些设备文件信息 var 目录全称(variable),用于存放日志文件的 tmp 目录用于临时存放文件信息 类似于Windows 回收站 proc 由内核组成,目录中会存放系统内核配置信息或服务进程信息,不会占用磁盘空间,只会占用内存空间
系统配置信息 文件 路径 网卡配置(centos) /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0 网卡配置(kali) /etc/systemd/networkd.conf 主机名 /etc/hostname 域名配置文件 /etc/resolv.conf 环境变量 /etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc 开机自动加载命令文件 /etc/rc.d/rc.local 用户登录信息提示文件 /etc/motd 系统版本信息 /etc/[redhat/centos/os(kali是os)]-release 用户相关文件信息 /etc/passwd cpu相关信息,包括型号、主频、内核信息等 /proc/cpuinfo 操作系统版本信息 /proc/version 系统全局 cron 配置文件 /etc/crontab docker配置文件 nginx配置文件 nginx启动文件 配置函数信息的文件 /etc/init.d/functions /etc/docker/daemon.json docker代理配置文件 /etc/systemd/system/docker.service.d/http-proxy.conf
目录 路径 自动加载运行脚本目录 /etc/profile.d/ 系统安装软件目录(rpm 手动方式 yum 自动方式) 存放独立 cron 配置文件的目录 /etc/cron.d/ 每个用户的 cron 表存储目录 /var/spool/cron/
日志信息 Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们 需要的信息。
内核及系统日志由系统服务rsyslog统一进行管理,日志格式基本相似
用户日志记录系统用户登录及退出系统的相关信息
程序日志由相应的应用程序进行独立管理。如:web服务,ftp服务 常见日志文件
日志文件 作用 /var/log/secure 登录日志。记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录, 比如 SSH登录, su登录,切换用户, sudo授权,甚至添加用户和修 改用户密码都会记录在这 个日志文件中。新版的ubuntu、debian、kali已经没有这个文件了 , 换成了 /var/log/auth.log /var/log/message 通用的系统活动日志。记录内核消息、系统服务(邮件、cron等)的常规信息、非关键网络错误等。 /var/log/cron 每当cron进程开始一个工作时,就 会将相关信息记录在这个 文件中。 /var/log/syslog 所有系统活动信息(比 messages
更全面)。包含内核、服务、应用等除认证外的所有信息。 /var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、 关机事件。同样这个文件也是一个二进制文件,不能直接编辑查看, 而需要使用 last命令来查看 /var/run/utmp 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不 断变化,只记录当前登录用户的信息。同样这个文件不能直接编辑查 看,而要使用 w,who,users等命令来查询 /var/log/btmp 记录所有失败登录日志信息。这个文件是二进制文件,不能直接编辑 查看,使用 lastb命令或 last -f /var/log/btmp 命令可以查看btmp文件。 /var/log/cups 涉及所有打印信息的日志。 /var/log/faillog 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中 /var/log/messages 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大 多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日 志文件。此外, mail,cron,daemon,kern和auth等内容也记录在var/log/messages /var/log/dmesg 包含内核缓冲信息( kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用 dmesg命令直接查看内核自检信息 /var/log/auth.log 包含系统授权信息,包括用户登录和使用的权限机制等。 /var/log/boot.log 包含系统启动时的日志。 /var/log/daemon.log 包含各种系统后台守护进程日志信息。 /var/log/dpkg.log 包括安装或 dpkg命令清除软件包的日志。 /var/log/kern.log 包含内核产生的日志,有助于在定制内核时解决问题。 /var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文 件,不能直接编辑查看,而要使用 lastlog命令查看 /var/log/user.log 记录所有等级用户信息的日志。 /var/log/alternatives.log 更新替代信息都记录在这个文件中。 /var/log/anaconda.log 在安装Linux时,所有安装信息都储存在这个文件中。 /var/log/yum.log 包含使用 yum安装的软件包信息。 /var/log/maillog /var/log/mail.log 包含系统运行电子邮件服务器的日志信息。例如, sendmail日志信息就全部送到这个 文件中
比较重要的几个日志:
登录失败记录:/var/log/btmp #lastb 最后一次登录:/var/log/lastlog #lastlog 登录成功记录: /var/log/wtmp #last 登录日志记录:/var/log/secure 目前登录用户信息:/var/run/utmp #w、who、users 历史命令记录:history 仅清理当前用户:history -c
网卡配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static IPADDR=10.0.0.5 NETMASK=255.255.255.0 GATEWAY=10.0.0.254 DNS1=10.0.0.254 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=27a73818-89f3-4991-9890-2da7924a73c4 DEVICE=ens33 ONBOOT=yes
更改配置需要重启网卡systemctl restart network
或 service network restart
域名解析配置 1 2 3 vim /etc/resolv.conf nameserver 10.0.0.254 cat /cat /etc/hosts
系统管理 环境变量 和变量 环境变量 别名相关的配置文件信息:/etc/profile
、/etc/bashrc
、~/.bash_profile
、~/.bashrc
、/etc/profile.d/
网安关注应急效应,异常占用资源、进程关闭后再次运行,有可能是 profile 被植入脚本运行命令。/etc/profile
、/etc/bashrc
、两个文件写到任意一个都会受到影响(把某个恶意跑进程的脚本放进去)。局部变量优于全局变量
如果想让变量重启后仍然有效就修改这些文件。
其他 文件时间信息分类
文件时间信息分类 英文全称 缩写 触发条件 文件修改时间 modified time mtime 文件信息内容发生变动时,会修改调整此时间信息 文件访问时间 access time atime 文件信息内容被访问读取时,会修改调整此时间信息 文件改变时间 change time ctime 文件属性信息发生变动时,会修改调整此时间信息
inode与block
文件索引-inode 数据信息索引 每创建一个文件可用的索引次数就会减少
文件大小-block 数据信息容量 文件中的信息内容不断添加,数据块就会不断减少
查看相关信息:
df -i --inode 可用数为0 表示磁盘空间不足
df block 可用数 为0 表示磁盘空间不足
inode:默认大小为128或者256字节
block:默认大小1-4kb
由于磁盘分区都比较大,所以一个磁盘中会创建出大量的inode和block
本质上有数字编号和实际存储空间对应 便于检索数据信息 —指针 库管 会议 仓库提货过程
存储的数据文件中包含数据文件属性
描述数据的数据 – 元数据
系统进程 程序(Program)是经开发编译后形成的静态可执行代码集合,是数据与指令的有序封装(如磁盘中存储的wechat.exe
或nginx
二进制文件),其生命周期独立于运行状态,可长期保存在存储介质中。
当程序被加载到内存并开始执行时,便转化为进程(Process) —— 它是程序的动态运行实例。此时,操作系统会为其分配专属的系统资源(如内存空间、CPU 时间片、文件描述符等),并记录其运行状态(如就绪、运行、阻塞等)。同时,进程会关联明确的所属用户,受系统权限管控。
简言之,程序是 “静态的代码文件”,而进程是 “动态的执行过程”。例如,双击wechat.exe
后,操作系统将其加载到内存并启动执行,此时任务管理器中显示的 “微信” 进程,便是该程序的运行实例。
进程与程序的本质区别 维度 程序(Program) 进程(Process) 存在形态 静态:以二进制文件、脚本等形式存储于磁盘 动态:加载到内存中执行的指令流与数据集合 资源关联 不占用系统运行时资源(仅占用存储资源) 占用 CPU、内存、I/O 等实时系统资源 生命周期 长期存在(除非主动删除文件) 随执行开始而创建,随任务完成或异常终止而消亡(有明确生命周期) 核心属性 仅包含代码逻辑与静态数据 包含运行状态、资源句柄、进程 ID(PID)、所属用户等动态元信息
理解进程与程序的区别,是系统运维的基础:程序是 “待执行的蓝图”,而进程是 “正在施工的现场”—— 运维的核心工作,正是通过监控、管理这些 “现场”,确保系统按预期稳定运行。
根据进程生命周期,存在两种特殊进程情况:
异常进程 任务没处理完子进程崩溃了,就会出现僵尸进程(Z) 儿子死了父亲还在 关注 木马病毒 产生大量Z 会占用大量内存资源
异常进程 任务处理完毕告知父进程时,父进程异常了,产生孤儿进程,系统会自动回收孤儿进程 了解
查看当前静态进程情况 ps -ef
|ps aux
以下是 ps aux
和 ps -ef
命令中所有列的英文缩写及含义对照表:
英文缩写 含义说明 出现命令 USER 进程所属的用户名(用户标识,字符串形式) ps aux PID Process ID,进程唯一标识符(进程 ID) ps aux、ps -ef %CPU 进程占用的 CPU 资源百分比(单位:%) ps aux %MEM 进程占用的物理内存百分比(单位:%) ps aux VSZ Virtual Set Size,虚拟内存大小(单位:KB,包含物理内存和交换空间等) ps aux RSS Resident Set Size,实际占用的物理内存大小(单位:KB,不包含交换空间) ps aux TTY 进程关联的终端设备(?
表示无终端关联,通常为后台进程) ps aux、ps -ef STAT Process State,进程状态(如 R 运行、S 睡眠、Z 僵尸、T 停止等) ps aux START 进程启动的时间(格式随系统时间范围变化,如时分、月日等) ps aux TIME 进程累计占用的 CPU 时间(格式:时:分: 秒) ps aux、ps -ef COMMAND 启动进程的完整命令及参数 ps aux UID User ID,进程所属用户的 ID(用户标识,数字形式) ps -ef PPID Parent Process ID,父进程的 ID(标识当前进程的父进程) ps -ef C CPU 使用率(整数形式,反映进程近期的 CPU 占用情况,精度低于 % CPU) ps -ef STIME 进程启动的时间(格式更紧凑,通常为时分或月日,随系统时间范围变化) ps -ef CMD 启动进程的命令及参数(可能因长度限制被截断) ps -ef
查看当前动态进程情况 top
输出分为 系统全局状态区 与 进程详情区 ,两者共同构成系统实时运行快照。
在 Linux 系统运维中,top
命令是实时监控进程资源与系统性能的核心工具。它通过动态刷新的界面,提供 CPU、内存、进程状态等关键指标,帮助管理员快速定位资源瓶颈与异常进程。
top与 ps 命令的核心差异:
工具 特性 适用场景 ps
静态快照,捕获某一时刻的进程状态(如 ps -aux
)。 记录历史状态、排查进程启动参数。 top
动态监控,实时刷新资源占用与进程行为(默认 3 秒 / 次)。 实时性能分析、异常进程定位。
系统全局状态区 系统全局状态区为输出的上半部分,以典型输出为例:
1 2 3 4 5 top - 09:27:45 up 5 days, 7:45, 4 users , load average: 0.00, 0.01, 0.05 Tasks: 123 total, 1 running, 121 sleeping, 1 stopped, 0 zombie %Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id , 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1863032 total, 1121288 free, 256980 used, 484764 buff/cache KiB Swap: 1535996 total, 1535996 free, 0 used. 1408888 avail Mem
第一行(系统基础信息)
09:27:45
:当前系统时间。
up 5 days, 7:45
:系统已连续运行 5 天 7 小时 45 分钟(未重启)。
4 users
:当前登录用户数(含本地终端与远程连接)。
load average: 0.00, 0.01, 0.05
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 :系统平均负载,分别对应过去 1 分钟、5 分钟、15 分钟的活跃进程数。 - **关键逻辑**:负载值代表处于 **可运行状态(`R`)** 或 **不可中断休眠状态(`D`)** 的进程数平均值。 - **健康指标**:若 1 分钟负载值超过 CPU 核心数(如 4 核 CPU 负载 >4 ),表明系统短期过载;若 15 分钟负载持续偏高,需排查长期资源瓶颈。 2 . **第二行(进程总数统计)** - `123 total`:系统总进程数。 - `1 running`:处于 `R` 状态的进程数(正在占用或等待 CPU)。 - `121 sleeping`:处于 `S`(可中断休眠)或 `D`(不可中断休眠)状态的进程数。 - `1 stopped`:处于 `T`(停止)状态的进程数(如被 `Ctrl+z` 暂停的 `ping` 进程)。 - `0 zombie`:僵尸进程(`Z` 状态)数量,若大于 0 需检查父进程是否未回收资源。 3 . **第三行(CPU 资源占用)** - **`us`:用户态进程占用 CPU 的百分比(如应用程序)**。 - `sy`:内核态进程占用 CPU 的百分比(如系统调用、进程调度)。 - `ni`:调整过优先级(`nice` 值非 0 )的用户态进程占用 CPU 的百分比。 - `id`:CPU 空闲百分比(数值越高,系统越空闲)。 - **`wa`:CPU 等待 I/O 操作(如磁盘读写)的百分比,若长期高于 5 % 需排查存储性能。** - `hi`:硬中断(如硬件设备触发的中断)占用 CPU 的百分比。 - `si`:软中断(如内核定时器、网络数据包处理)占用 CPU 的百分比。 - `st`:虚拟化环境中,物理 CPU 被其他虚拟机占用的百分比(`st` 过高可能意味着宿主机资源竞争)。 4 . **第四、五行(内存与交换分区)** - `KiB Mem`(物理内存): - `total`:总容量;`free`:完全空闲内存;`used`:进程直接占用内存;`buff/cache`:磁盘缓存(可释放供其他进程使用)。 - `KiB Swap`(虚拟内存): - `avail Mem`:新进程可使用的总内存(含 `free` 及可释放的 `buff/cache`)。 ##### 进程详情区(下半部分) 以典型输出为例: ```bash PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 53720 root 20 0 0 0 0 S 0.3 0.0 0 :18.08 kworker/1 :1 1 root 20 0 202396 7300 4184 S 0.0 0.4 5: 01.00 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0: 00.93 kthreadd
字段说明:
字段 含义说明 PID
进程唯一标识,操作进程的核心索引(如 kill 53720
)。 USER
进程所属用户,用于权限追溯(如 root
进程通常拥有更高权限)。 PR
进程调度优先级(范围 0-39,值越低优先级越高,内核动态调整)。 NI
nice
值(优先级偏移量,范围 -20~19,值越低优先级越高,用户可通过 nice
命令调整)14。VIRT
进程占用的虚拟内存总量(包括物理内存、交换分区、未使用的分配内存),类似 “建筑面积”。 RES
进程实际使用的物理内存(不包括交换分区),类似 “实际使用面积”。 SHR
进程共享的内存量(如动态链接库),类似 “公摊面积”。 S
进程状态(R
运行、S
休眠、T
停止、Z
僵尸等)。 %CPU
进程占用 CPU 的百分比(过去 3 秒内的平均值)。 %MEM
进程占用物理内存的百分比(相对于总物理内存)。 TIME+
进程累计占用的 CPU 时间(精确到 0.01 秒)。 COMMAND
启动进程的命令(含参数时会截断显示,按 c
可显示完整路径)。
核心功能与快捷键 top
命令以交互式界面实时展示系统状态,支持以下核心操作:
基础交互
h
或 ?
:调出帮助文档,查看所有快捷键与功能说明。q
:退出监控界面。s
或 d
:调整刷新间隔(单位:秒),默认 3 秒刷新一次。资源排序
P
:按 CPU 使用率(%CPU
)降序排序,快速定位高负载进程。M
:按内存使用率(%MEM
)降序排序,排查内存占用异常。T
:按累计 CPU 时间(TIME+
)排序,识别长期占用资源的进程。视图优化
1
:展开多核 CPU 视图,显示每个物理核心的负载详情(如 %Cpu0
、%Cpu1
)。z
:启用颜色高亮,区分不同数据区域(如红色标记高负载进程)。b
:高亮显示处于 R
(运行)状态的进程,直观识别活跃任务。高级控制
k
:终止进程(输入 PID 后可指定信号,如 9
强制终止)。r
:调整进程优先级(通过 nice
值,范围 -20~19,值越小优先级越高)。c
:切换显示进程完整命令行(含参数),避免因名称截断导致的误判。关键指标与异常排查 性能瓶颈定位
CPU 过载 :若 %CPU
长期高于 80%,按 P
排序找出高负载进程,结合 ps -fp <PID>
分析代码逻辑或考虑扩容。内存泄漏 :若 %MEM
持续增长且 avail Mem
下降,按 M
排序排查异常进程,使用 pmap
或 valgrind
分析内存分配。磁盘 I/O 瓶颈 :若 wa
长期高于 10%,使用 iotop
定位高 I/O 进程,优化存储或升级硬件。进程状态异常
僵尸进程(Z
状态) :终止父进程(kill <PPID>
)或修复程序逻辑(确保调用 wait()
回收子进程资源)。不可中断进程(D
状态) :可能因磁盘 I/O 阻塞,使用 strace
跟踪系统调用或检查存储设备健康状态。虚拟化环境监控
若 st
持续高于 10%,表明宿主机资源不足,需迁移虚拟机或增加物理 CPU 核心。 数据保存与高级用法 批处理模式记录日志
1 top -b -n 5 > /tmp/top_monitor.log
-b
:以批处理模式运行,适合脚本调用或离线分析。
-n 5
:指定刷新次数,避免无限输出。
自定义显示字段
按 f
进入字段选择界面,通过方向键添加 / 删除字段(如 CODE
代码内存、DATA
数据段内存)。 按 o
调整字段顺序(如将 %CPU
列移至首位)。 多进程监控
进程状态(STAT)信息 在 Linux 系统中,通过ps
、top
等命令查看进程时,状态标识(如R
、S
、Z
等)直观反映了进程的当前行为。以下是各状态及相关符号的说明:
核心状态标识 进程状态由内核根据其资源占用、调度情况动态标记,核心状态标识(Process State Codes)如下:
R
(Running / Runnable,运行状态) 进程处于 “可被 CPU 调度” 的状态:要么正在占用 CPU 执行指令,要么已就绪(等待 CPU 分配时间片)。此时进程位于内核的 “就绪队列” 中,是系统中 “活跃” 的典型代表。
S
(Interruptible Sleep,可中断休眠状态) 进程因等待某事件(如 I/O 操作完成、信号触发、定时器超时等)而暂停执行,此时不占用 CPU 资源。该状态可被外部信号(如SIGINT
)中断并唤醒(例如通过kill
命令发送信号)。
状态衍生符号(优先级相关):
T
(Stopped / Traced,停止 / 跟踪状态) 进程被主动暂停执行,通常由以下场景触发:
收到暂停信号(如SIGSTOP
),例如通过Ctrl+z
暂停前台进程(如ping 223.5.5.5
执行时,Ctrl+z
会将其暂停为T
状态); 被调试器(如gdb
)跟踪,处于断点调试状态。 该状态的进程可通过SIGCONT
信号恢复运行(如fg
命令将后台暂停进程调至前台),适用于暂不明确进程作用时 —— 先暂停而非直接kill
,降低误操作风险。
操作示例:
暂停进程:ping 223.5.5.5
执行中按Ctrl+z
,进程进入T
状态;
查看暂停任务:jobs
命令(仅显示当前终端会话创建的任务);
恢复进程:fg %1
(将编号为 1 的暂停任务调至前台继续运行);
彻底终止:Ctrl+c
直接终止前台进程,或kill
命令发送终止信号。
D
(Uninterruptible Sleep,不可中断休眠状态) 进程因等待 “不可中断的系统资源”(如磁盘 I/O、硬件设备响应)而进入深度休眠,不响应任何外部信号 (包括kill -9
)。其设计目的是确保关键资源操作的原子性(如 MySQL 执行大量数据写入时,需等待磁盘同步完成,避免数据一致性问题)。
注意:D
状态进程虽不直接占用 CPU,但会锁定相关资源,若长期存在可能暗示硬件故障(如磁盘读写超时)。
Z
(Zombie,僵尸状态) 子进程已终止(退出),但父进程未调用wait()
系列系统调用回收其资源(如进程 ID、退出状态等),导致其残留于进程表中。僵尸进程不占用 CPU、内存等实际资源,但会消耗进程表项(系统进程 ID 数量有限),积累过多可能导致新进程无法创建。
状态辅助符号 除核心状态外,ps
命令还会显示以下符号,用于描述进程的附加属性:
s
:进程为会话首进程 (Session Leader),通常是进程组的父进程,负责管理整个进程组的生命周期(如终端启动的命令进程多为会话首进程)。
<
:进程运行在高优先级 (对应S<
状态,优先级值低于默认,Linux 优先级范围为 - 20~19,值越小优先级越高)。
N
:进程运行在低优先级 (对应SN
状态,优先级值高于默认)。
+
:进程属于前台进程组 ,直接接收终端输入(如当前终端执行的ls
命令进程)。
l
:进程包含多个线程 (Lightweight Process),多线程进程可并行处理多个任务(如微信同时运行文字聊天、视频通话等功能,分别由不同线程执行),提升 CPU 利用率与响应速度。
结合ps
、top
等工具查看进程状态变化,通过状态标识可快速判断进程是否正常运行、是否存在资源竞争、是否需要干预(如终止僵尸进程、排查 D 状态进程的资源瓶颈)。
进程控制:kill 命令 kill
命令通过向进程发送 信号(signal) 实现进程控制(终止、暂停、重启等),核心语法为:
核心参数说明 -l
:列出所有可用信号(共 64 种,格式如 1) SIGHUP 9) SIGKILL
)。
-s <信号>
:指定发送的信号(可用名称或编号,如 -s SIGKILL
或 -9
)。
-p
:仅输出目标进程的 PID,不发送任何信号(用于验证进程存在性)。
常用信号及场景 信号名称 编号 功能说明 SIGHUP
1 通知进程重新加载配置文件(如 nginx
服务重载)。 SIGINT
2 中断进程(通常由 Ctrl+C
触发,可被进程捕获处理)。 SIGKILL
9 强制终止进程(不可被捕获或忽略,适用于无法正常终止的进程)。 SIGTERM
15 优雅终止进程(默认信号,允许进程释放资源后退出,优先推荐使用)。 SIGSTOP
19 暂停进程(不可被忽略,需配合 SIGCONT
恢复)。 SIGCONT
18 恢复被 SIGSTOP
暂停的进程。
注意事项 权限要求 :仅进程所有者或 root
可发送信号(普通用户无法终止其他用户的进程)。
强制终止风险 :SIGKILL
(信号 9)可能导致数据丢失(如未保存的文件),尤其对存储服务(如数据库)需谨慎使用。
信号重试 :部分守护进程可能忽略 SIGTERM
,可先尝试 SIGTERM
,无效再用 SIGKILL
。
系统平均负载 平均负载定义为 单位时间内,系统中处于「可运行状态(R)」和「不可中断状态(D)」的平均进程数 (即活跃进程数 ),与 CPU 使用率无直接关联:
系统平均负载的合理范围 系统平均负载的合理范围与 CPU 核心数强绑定。理想状态:平均负载 ≈ CPU 核心数 (每个核心恰好运行 1 个进程)。不同核心数下,相同负载的意义截然不同:
CPU 核心数 平均负载 = 2 的含义 4 核 CPU 使用率 50%(50% 资源空闲) 2 核 CPU 使用率 100%(资源刚好用满) 1 核 CPU 使用率 200%(50% 进程需等待 CPU)
时间维度的解读 平均负载包含 1 分钟、5 分钟、15 分钟 三个值,需结合判断趋势:
告警建议 :当平均负载超过 CPU 核心数的 70% 时,建议介入分析(需结合历史数据动态调整阈值)。
与 CPU 使用率的区别 平均负载涵盖 等待 CPU、等待 I/O、进程调度 的进程,而 CPU 使用率仅统计 CPU 繁忙程度,二者在不同场景下表现不同:
序号 负载升高场景 平均负载变化 use% sys% wait% CPU 整体使用率 磁盘 IO 消耗 01 CPU 密集型进程 升高 消耗多 消耗少 消耗少 使用率高(某个核心) 磁盘消耗小 02 IO 密集型进程 升高 消耗少 消耗多 消耗多 使用率低 磁盘消耗大 03 大量进程产生 升高 消耗多 消耗少 消耗多 使用率高(所有核心) 磁盘消耗小
问题排查核心思路 查看负载 :通过 uptime
/top
获取 1/5/15 分钟负载值,判断趋势。
分析 CPU :用 mpstat
查看多核负载、iowait 等指标,定位瓶颈类型(CPU 计算 / IO 等待)。
定位进程 :通过 pidstat
/top
追踪高负载进程(CPU/IO 占用异常的进程)。
日志溯源 :结合进程所属服务的日志,分析代码逻辑或资源配置问题。
压力测试与监控工具 :
stress是Linux系统压力测试工具,可以用作异常进程模拟平均负载升高的场景。
mpstat:是多核CPU性能分析工具,用来实时查看每个CPU的性能指标,以及所有CPU的平均指标;
pidstat:是常用的进程性能分析工具,用来实时查看进程的CPU、内存、1/0以及上下文切换等性能指标;
1 yum install -y sysstat stress
系统管理命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 history -c shutdown -h now shutdown -h 0 shutdown -h now shutdown -h 5 init 0 half shutdown -r 0/now init 6 reboot hostname name hostnamectl set-hostname name command 2>/dev/nullwhich cat export NAME export NAME=value NAME=value; export NAME unset NAME echo 'export JAVA_HOME="/opt/java"' >> /etc/profile echo 'export PATH="$PATH:~/.local/bin"' >> ~/.bashrc env | grep NAME alternatives --config <命令名> alternatives --remove <名称> <路径> alternatives --display <名称> alternatives --install <链接> <名称> <路径> <优先级> crontab -e crontab -l crontab -r crontab -u user -e free -h df -ha -A c -e e f -H -N s u x ps aux ps -ef alias eth0='cat /etc/sysconfig/network-scripts/ifcfg-ens33' unalias eth0alias eth0='cat /etc/sysconfig/network-scripts/ifcfg-eth0' >> /etc/profiletouch `date +%F`.txtjobs bg fg -a 或 --all -s 或 --kernel-name -n 或 --nodename -r 或 --kernel-release tail /var/log/messages
文件管理 文件类型
①文件属性索引节点 --inode(唯一的)–身份证号 ②文件属性信息和文件权限信息 ③文件硬链接数:查看文件数据信息的多个门(类似于挂载) ④文件属主信息:文件管理者/文件创建者 ⑤文件属组信息/所属用户组信息: 便于进行权限整体分配 ⑥文件数据信息大小尺寸 ⑦文件数据最后修改时间信息(Mtime)
文件类型:告诉系统管理者这个文件是什么类型 f(-) d c b s p l
文件类型 字符 含义 普通文件 - 文本 图片等 目录文件 d 目录 链接字文件 | ==Windows 桌面快捷方式 块设备文件 b 存储数据以供系统存取的接口设备,简单而言就是硬盘。 字符设备文件 c 即串行端口的接口设备,例如键盘、鼠标等等。 套接字文件 s 这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型 管道文件 p FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。
软连接与硬链接:
软连接 l
硬链接 f
软连接:可以方便调取数据信息
复制连接的时候注意 复制的原文件的inode 是真实的文件
注意: 软链接的inode 和原文件的inode 是不一样的
硬链接的inode和原文件的inode是完全一样的
软链接是一个新的文件 删除不会有影响
删除硬链接会删除原文件(如果有多个硬链接,删除到最后一个硬链接会删除原文件)
修改硬链接 即修改原文件
文件管理命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 mkdir directionName mkdir {src,tools} mkdir -p a/b/c/ ls -l ls -lh ls -a ls -li cd ~ cd / cd .. cd - cd ~user rm -r filename filename rm -f cp /路径/旧文件 /路径/新文件cp -r /路径/目录 /路径/目录 -a cp a.txt b.txt mv 文件/目录 新目录/mv a b touch filename touch {filename1,filename2} touch {1..5}.txt cat -n filename cat test.txt >> README cat >>a<<EOF #追加新内容 > hello > EOF cat >a<<EOF #覆盖原始内容 > world > EOF head [-n] tail [-n] tail -f echo "123456" >hxjl.txt echo "123456" >>hxjl.txt echo -e echo -E echo $envname echo "this is test" > test.txt grep [-参数] string filename -i -n -c -v -l -w -c -m -L rz -y wget url file fileName rpm -ivh <rpm包名> rpm -e <rpm包名> rpm -Uvh <rpm包名> rpm -qi <rpm包名> rpm -qa | grep xxx rpm -qc <包名> rpm -qd <包名> rpm -qlp <RPM文件路径> rpm -q --scripts <包名> -i, --install -v --verbose -h, --hash -U, --update -e, --erase -V, --verify -l –test -q, --query -a, --all -p, --package -l, --list -d, --docfiles -f, --file stat filename -c n1-n2 find 查找路径 选项参数(查找数据条件) 操作语句 -mtime +10 -mtime -10 -name "c.sh" #文件名 -name "hxjl*.txt" #支持正则 -type d ! -type d -size ±1M -perm 644 -exec ls -l {} \; -i -w -c -e --regex locate *.pdf locate -i -e 'apache2' locate /data/ | grep '/data/[^/]*\.log$' locate "$(pwd) /*.txt" -z -j -c -v -f -t -x -tf -zxvf -cvf -rvf -xvf tar -zcvf name.tar.gz file1 ... filen tar -zxvf name.tar.gz tar -jcvf name.tar.gz file1 ... filen tar -jxvf name.tar.bz2 -C /path/ -r -q -d -u -f -m -e -z zip -r 压缩包名.zip 文件1 文件2 文件n zip -r test.zip /home/test -x "/home/test/test01/*" zip -r test.zip test / -z gunzip a.txt.gz gzip -d a.txt.gz bunzip2 a.bz2 bzip2 -d a.bz2 ln /etc/services /data/link_hard ln -s /etc/services /data/link_soft
用户及权限管理 用户介绍 用户信息: 可以作为系统数据或者程序进程操作管理者
用户组信息:可以将多个系统用户进行整合,方便统一对多个用户的权限进行管理
用户
字符 含义 u 所属主 uid g 所属组 gid o 其他人 others a 所有人 all
用户相关文件信息配置文件 :/etc/passwd
以:为分隔符 分为若干部分
1 用户名:密码占位符:用户ID(UID):组ID(GID):用户描述:家目录:登录Shell
用户名:字符串(如root),用于用户登录,长度限制为 32 字符。
密码占位符:通常为x,表示密码已加密存储在/etc/shadow中。若为空则表示无需密码登录(危险)。
UID:整数,0 为 root 用户,1-999 为系统用户,1000 + 为普通用户。
GID:对应/etc/group中的主组 ID。
用户描述:可选信息(如John Doe),通常用于注释。
家目录:用户登录后的默认目录(如/home/user),root 用户为/root。
登录 Shell:用户登录后使用的 Shell 程序(如/bin/bash),/sbin/nologin表示禁止登录。
用户加密密码和密码策略 :/etc/shadow
1 用户名:加密密码:最后修改日期:最小修改间隔:最大修改间隔:警告期:非活跃期:过期日期:保留字段
加密密码使用$id$salt$hash
格式存储(如 $6$...
表示 SHA-512),!
或 *
表示账户锁定。
用户组信息: /etc/group
权限介绍 字符 权限 w—4 写权限 r----2 读权限 x----1 执行权限(脚本文件先赋权才能再执行)
r 读权限 4
针对文件:利用此权限可以看到文件中的内容 cat
针对目录:可以看到目录下有什么数据 ls/目录
w 写权限 2
x 执行权限 1
针对文件:利用此权限 执行脚本信息
针对目录:利用此权限可以切换到目录中
另 X:针对目录加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)
企业真实场景权限配置:
默认配置:
文件权限: 644 属主拥有读和写写权限 属组和其他用户只有读权限
目录权限: 755 属主拥有查看编辑进入权限 属组和其他用户只有查看进入权限
严格权限:
文件权限: 600 只有属主有读和写权限
目录权限: 700 只有属主有读写和进入权限
特殊权限 Linux 中的文件权限除了常见的读(r
)、写(w
)、执行(x
)权限外,还有三个特殊权限 :SetUID
(SUID)、SetGID
(SGID)和Sticky Bit
。它们用于解决一些特定的场景需求,通常设置于可执行文件或目录上,提供额外的权限控制功能。
SetUID(SUID) SetGID(SGID) Sticky Bit 特殊权限总结 权限名称 符号 八进制值 主要作用对象 核心功能 SUID s
(所有者x位)4
可执行文件 执行时获得文件所有者 权限 SGID s
(组x位)2
可执行文件 执行时获得文件所属组 权限 目录 目录下新建文件继承目录的组 Sticky Bit t
(其他用户x位)1
目录 仅文件所有者可删除 目录下的文件
查看系统中的特殊权限实例
SUID: ls -l /usr/bin/passwd
(应看到 -rwsr-xr-x
)
SGID (目录): ls -ld /var/mail
(很多系统设置为 drwxrwsr-x
)
Sticky Bit: ls -ld /tmp
(应看到 drwxrwxrwt
)
理解并正确使用这三个特殊权限对于 Linux 系统管理、权限规划和系统安全至关重要。务必谨慎设置 SUID,善用 SGID 管理共享目录,并在需要全局可写临时目录时使用 Sticky Bit。
sudoers权限分配 sudoers
文件编辑与定位
执行visudo
命令进入编辑界面后,可通过100gg
快捷键快速定位至文件第 100 行附近(具体行数需根据系统版本及配置历史调整,通常用于找到预设的用户权限配置段),在此处可添加或修改用户的sudo
权限规则。
验证sudoers
配置正确性
配置完成后,需通过visudo -c
命令验证/etc/sudoers
文件的语法合法性,确保无格式错误:
1 2 [01:18:44 root@centon7 tmp]# visudo -c /etc/sudoers:解析正确
若输出 “解析正确”,则说明配置文件语法无误,可正常生效。
查看系统用户与权限配置
在/etc/sudoers
中,用户权限规则的典型配置格式为:
1 用户名 ALL=(ALL) /sbin/useradd,/bin/cat
其中:
查看用户sudo
权限
对于已配置sudo
权限的用户,可通过sudo -l
命令查看自身被授权的具体操作,便于验证权限分配是否符合预期:
该命令会列出当前用户可通过sudo
执行的所有命令及相关限制。
用户及权限管理命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 chmod XXX filename chmod +x filename chmod u+x,g+x,o+x filename chmod ug+w,o-w 1.txt 2.txtchmod a=wx c.txtchmod -R id user id -c -u -g -G -M -s useradd -g users -c "hr tom" tom useradd xhy echo 123456|passwd --stdin xhyuserdel 用户名 userdel -r 用户名 -c -u -g -G -aG -M -s -l -d -m usermod -l newuser -d /home/newuser -m olduser chown root /var/log/httpd.log chown :staff /home/user/file.txt chown user1:group1 /data/project chown -R 主:组 文件 -h gpasswd -a 用户 组 gpasswd -d 用户 组 chattr -i chattr -i p
磁盘管理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 du -sh filePath du -hdu -ahdf -h-h -T -i df
vim使用 普通模式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 yy nyy p np dd ndd D dG G gg nG $ 0 Ctrl+u ctrl+r
末行模式(命令模式):
1 2 3 4 5 6 7 8 9 10 :/要检索的内容 : %s/root/ROOT/g :set nu :q :q! :wq :wq! :e! :w a.txt :w >> a.txt
每次进入vi就有行号编辑文件.vimc
添加set nu