目录
分析和存储日志类
调优系统性能类
SELinux 安全类
基本存储类(挂载,分区,swap交换问题)
分析和存储日志类
1. RHEL 日志文件保存在哪个目录中?
/var/log/(所有系统、应用日志的核心目录,子目录 / 文件按功能分类)。
2. 什么是 syslog 消息和非 syslog 消息?
· syslog 消息:遵循 syslog 标准格式的日志,有设施(facility,如 auth、kern、daemon)和优先级(priority,如 info、warn、err),可被 syslog 服务统一收集、转发、存储;
· 非 syslog 消息:不遵循 syslog 标准的日志,由应用 / 服务自行定义格式和存储方式(如部分应用直接将日志写入自定义文件,不经过 syslog 服务)。
3. 哪两个服务处理 RHEL 中的 syslog 消息?
· rsyslog:主流的 syslog 服务,负责收集、过滤、转发 syslog 消息到指定日志文件 / 远程服务器;
· systemd-journald:systemd 自带的日志服务,可收集 syslog 消息,也能收集非 syslog 的系统 / 服务日志,提供更丰富的日志查询能力。(两者协同:journald 可将日志转发给 rsyslog 持久化,rsyslog 负责传统 syslog 的规则处理)
4. 列举常用的系统日志文件并说明其存储的消息类型。
/var/log/messages核心系统日志,存储除认证、邮件、内核外的大部分系统服务和应用的常规信息、警告
/var/log/secure安全认证日志,存储 SSH、登录、sudo、用户认证等相关的成功 / 失败信息
/var/log/maillog邮件服务日志,存储 postfix 等邮件服务的收发、投递相关信息
/var/log/cron定时任务日志,存储 crontab 任务的执行时间、结果、报错信息
/var/log/boot.log系统启动日志,存储启动过程中服务启动、初始化脚本的执行信息
5. 简单说下日志文件轮转的作用。
· 防止单个日志文件过大占满磁盘空间,导致系统 / 应用异常;
· 按时间 / 大小分割日志,便于日志归档、查询和清理;
· 保留历史日志(可配置保留数量),满足故障排查和审计需求;
· 无需停止日志服务即可完成分割,保证日志收集不中断
6. systemd-journald 服务将日志数据存储在什么文件中?
默认存储在 /run/log/journal/(临时目录,重启后日志丢失);配置持久化后存储在 /var/log/journal/(永久目录,重启后日志保留),该目录下为二进制日志文件,需通过journalctl命令解析。
7. 默认情况下,系统日志保存在哪里?如何配置持久系统日志?
· 默认存储:
rsyslog 的文本日志:/var/log/(如 messages、secure);
systemd-journald 的二进制日志:/run/log/journal/(临时,重启丢失)。
· 配置 journald 持久化日志:
1.创建持久化目录:mkdir -p /var/log/journal;
2.更改目录权限:chown root:systemd-journal /var/log/journal;
3.重启 journald 服务:systemctl restart systemd-journald;(无需修改配置文件,journald 检测到 /var/log/journal 会自动开启持久化)。
8. Linxu 通过哪个服务来保证本地硬件时钟 (RTC) 保持正确运行?
chronyd(RHEL7 及以上默认)或ntpd(旧版本),两个服务均为 NTP 时间同步服务,会将系统时钟与网络 NTP 服务器同步,并将正确的系统时钟写入硬件时钟(RTC),保证硬件时钟准确。
调优系统性能类
1. 系统管理员可以使用哪个命令来更改 tuned 守护进程的设置?
tuned-adm,核心子命令:
查看可用配置文件:tuned-adm list;
切换配置文件:tuned-adm profile <配置名>(如 balanced、performance);
查看当前配置:tuned-adm active。
2. nice 值是什么?
nice 值是 Linux 系统中用于调整进程 CPU 调度优先级的参数,取值范围为 -20 ~ 19:
数值越小,优先级越高,进程获得的 CPU 资源越多;
数值越大,优先级越低,进程获得的 CPU 资源越少;
普通用户只能提高 nice 值(降低优先级),root 用户可任意调整(包括负数)。
3. 如何使用 top 和 ps 命令查看 nice 级别?
· top 命令:进入 top 界面后,直接查看NI列,该列显示的即为进程的 nice 值;
· ps 命令:
查看单个进程:ps -o pid,nice,cmd <PID>;
查看所有进程:ps -efl(查看NI列)
4. 使用 nice 命令启动进程时,进程的默认值是多少?
默认 nice 值为 0,直接执行nice <命令>,进程会以nice 0启动;若需指定值,使用nice -n <数值> <命令>。
5. 如何更改现有进程的 nice 级别?
使用renice命令,root 用户可修改所有进程,普通用户仅能修改自己的进程:
按 PID 修改:renice <新nice值> -p <进程PID>;
按用户名修改:renice <新nice值> -u <用户名>(修改该用户的所有进程);示例:renice 5 -p 1234(将 PID1234 的进程 nice 值改为 5)。
SELinux 安全类
1. SELinux 是如何保护资源的?
SELinux 通过强制访问控制(MAC) 机制保护系统资源(文件、进程、端口、套接字等),核心逻辑:
为所有资源和主体(进程)分配唯一的 SELinux 上下文(用户、角色、类型、级别);
系统内置大量SELinux 策略规则,定义 “哪些主体(进程)可以访问哪些资源(上下文)”;
即使进程拥有 Linux 传统的 rwx 权限,若未匹配 SELinux 策略,仍无法访问资源,实现 “权限的二次校验”。
2. 什么是强制访问控制(MAC)?它有什么特点?
强制访问控制(MAC):是一种系统级的访问控制机制,由系统管理员 / 系统内核统一制定访问策略,主体(进程)无法自行修改访问权限,策略强制生效。核心特点:
强制性:策略由系统定义,普通用户 / 进程无权限修改,避免权限被篡改;
细粒度:可针对单个文件、端口、进程制定精准的访问规则(如 “仅 httpd 进程可访问 80 端口和 httpd 类型的文件”);
与传统权限独立:MAC 是对 Linux 自主访问控制(DAC)的补充,即使拥有 DAC 权限,仍需满足 MAC 策略;
多维度:可基于用户、角色、类型、安全级别等多维度制定规则(如 MLS 多级安全)。
3. 什么是 SELinux 上下文?
SELinux 上下文就是给 Linux 系统里所有资源贴的唯一 “身份标签”,是 SELinux 判断 “谁能访问谁” 的核心依据。
系统里所有主体和客体都有 SELinu 上下文标签:
主体:发起访问的对象(进程、用户,比如 httpd 服务进程、登录的普通用户);
客体:被访问的对象(文件、目录、端口、设备,比如 /var/www/html 里的网页文件、80 端口)。
最常用的标签格式:用户:角色:类型[:级别]
核心原理:标签匹配才允许访问
SELinux 的安全策略,本质就是定义 “哪种类型的主体,能访问哪种类型的客体”,举个最常见的例子:
网页文件/var/www/html/index.html的上下文类型是httpd_sys_content_t(网页内容标签);
httpd 服务进程的上下文类型是httpd_t(httpd 进程标签);
SELinux 策略预设:仅允许httpd_t类型的进程,访问httpd_sys_content_t类型的文件;
如果把网页文件的标签改成其他类型(比如default_t),就算 httpd 进程有传统的 rwx 权限,也无法访问该文件,网页会报错。
4. setenforce 0 命令的作用是什么?
将 SELinux 的运行模式临时切换为宽容模式(Permissive),核心效果:
不强制拒绝违反 SELinux 策略的访问行为,仅将违规操作记录到日志(/var/log/audit/audit.log);
该修改临时生效,系统重启后恢复为原模式(Enforcing/Disabled);
对应恢复强制模式命令:setenforce 1。
5. 定义一条 SELinux 文件上下文规则,以便将 /custom 目录及目录中所有文件的上下文类型设置
使用semanage fcontext命令定义永久规则,再通过restorecon命令应用规则
为 httpd_sys_content_t。
semanage fcontext -a -t httpd_sys_content_t "/custom(/.*)?"
restorecon -Rv /custom
解析:
semanage fcontext -a:添加新的文件上下文规则;
-t httpd_sys_content_t:指定目标类型为 httpd_sys_content_t;
"/custom(/.*)?":匹配 /custom 目录及目录下的所有子文件 / 子目录(正则表达式);
restorecon -Rv:递归(-R)应用规则并显示详细过程(-v),将目录的上下文刷新生效。
基本存储类(挂载,分区,swap交换问题)
1. 对 Linux 磁盘进行分区时有哪两种方案?分别加以详细说明。
Linux 磁盘分区的两大核心方案:MBR(主引导记录) 和GPT(GUID 分区表),详细说明:
(1)MBR(主引导记录)
基于传统 BIOS的分区方案,分区表存储在磁盘的第一个扇区(引导扇区);
分区数量限制:最多支持4 个主分区,或 3 个主分区 + 1 个扩展分区(扩展分区内可创建多个逻辑分区);
磁盘容量限制:单块磁盘最大支持2TB(因分区表仅用 32 位记录扇区地址);
引导支持:分区表中包含引导加载程序(GRUB),负责系统启动;
适用场景:老旧服务器、BIOS 主板、2TB 以下的小容量磁盘。
(2)GPT(GUID 分区表)
基于UEFI的新式分区方案,分区表存储在磁盘头部和尾部(双重备份,容错性高);
分区数量限制:理论上支持128 个主分区(无扩展 / 逻辑分区概念,所有分区均为主分区);
磁盘容量限制:支持2TB 以上大容量磁盘(用 64 位记录扇区地址,最大支持 18EB);
引导支持:依赖 UEFI 固件引导,自带 ESP(EFI 系统分区)存储引导文件,兼容性更强;
适用场景:新服务器、UEFI 主板、2TB 以上的大容量磁盘(如机械硬盘、SSD)。
2. 简单说下创建 MBR 磁盘分区涉及哪几个步骤?
以fdisk工具为例,创建 MBR 分区核心步骤:
查看磁盘:fdisk 分区
重读分区表:udevadm settle 让系统识别新分区(避免重启)
格式化 mkfs.Xfs
改文件:/etc/fstab
挂载;mount
3. 创建 GPT 分区与创建 MBR 分区有什么不同?
分区工具:MBR 分区主要用fdisk(交互式),GPT 分区主要用gdisk/parted
分区类型:主分区 / 扩展分区 / 逻辑分区仅主分区(最多 128 个)
分区标识:用分区类型 ID(如 83/82)用GUID 类型标识(如 0FC63DAF-8483-4772-8E79-3D69D8477DE4 为 Linux 文件系统)
分区表保存:直接w保存即可需验证 GPT 分区表(gdisk中输入v校验,再w保存,需确认 Y)
固件支持:仅 BIOS主要 UEFI,部分 BIOS 兼容(CSM 模式)
容量 / 数量限制2TB / 最多 4 主分区18EB/128 个主分区
4. 在创建分区时就会在分区上创建文件系统吗?
不会。创建分区仅为磁盘划分 “空闲的分区区域”,该区域无任何文件系统结构,无法存储数据;必须单独执行格式化命令(如mkfs.ext4、mkfs.xfs),才能在分区上创建文件系统,之后分区才可被挂载和使用。
5. 如何持久挂载文件系统?
Linux 中临时挂载(mount命令)重启后失效,持久挂载需将挂载信息写入系统配置文件 /etc/fstab,核心步骤:
查看分区的 UUID / 设备名:blkid /dev/sdb1(推荐用 UUID,避免设备名漂移);
编辑 fstab 文件:vim /etc/fstab,添加一行挂载配置,格式:
UUID=xxxx-xxxx /mnt/data xfs defaults 0 0
· 字段说明:UUID / 设备名 → 挂载点 → 文件系统类型 → 挂载选项 → dump 备份 → fsck 检查顺序;
· 验证配置:mount -a(无报错则配置正确,系统会自动挂载该分区);
· 生效:重启后系统会自动读取 fstab 并挂载所有配置的文件系统。
6. Linux 为什么要使用 swap?
swap(交换分区 / 交换文件)是 Linux 的虚拟内存扩展,将磁盘空间模拟为内存使用,核心作用:
补充物理内存:当物理内存(RAM)被占满时,系统会将内存中闲置的冷数据交换到 swap 中,释放物理内存给活跃进程使用,避免进程因内存不足被杀死;
支持内存休眠:部分 Linux 系统可将内存数据写入 swap,实现休眠功能(开机后从 swap 恢复数据,无需重新启动进程);
兼容低内存场景:在物理内存较小的服务器 / 虚拟机中,swap 可临时缓解内存压力,保证系统基本运行;
避免 OOM:降低系统因内存耗尽触发 OOM Killer(内存溢出杀手)杀死核心进程的概率。
7. 过度使用 swap 有什么缺点?
swap 是磁盘空间,磁盘的读写速度远低于物理内存(RAM),过度使用(swap 使用率持续高于 80%)会导致严重性能问题,核心缺点:
系统卡顿 / 响应缓慢:进程频繁与 swap 进行数据交换(换入 / 换出),磁盘 I/O 成为性能瓶颈,CPU 等待磁盘读写,整体系统响应变慢;
进程运行效率降低:活跃进程的数据若被频繁交换到 swap,进程执行时需从磁盘读取数据,执行速度大幅下降;
磁盘磨损加剧:机械硬盘(HDD)频繁随机读写会增加磁头损耗,固态硬盘(SSD)会消耗写入寿命(P/E 周期);
掩盖内存不足问题:过度使用 swap 会让管理员忽略 “物理内存不足” 的本质问题,导致系统长期处于低性能状态;
OOM 风险仍存在:若 swap 也被占满,系统仍会触发 OOM Killer,杀死核心进程(如 sshd、nginx),导致服务中断。
8. 如何持久激活交换空间?
与文件系统类似,临时激活的 swap(swapon)重启后失效,持久激活需写入 /etc/fstab 配置文件,核心步骤:
创建 swap 分区 / 文件(如 /dev/sdb2),格式化 swap:mkswap /dev/sdb2;
查看 swap 的 UUID:blkid /dev/sdb2;
编辑 fstab 文件:vim /etc/fstab,添加一行 swap 配置,格式:
UUID=xxxx-xxxx swap swap defaults 0 0
· 生效并验证:
临时激活:swapon -a(读取 fstab 并激活所有 swap);
查看状态:swapon –show 或 free -h(确认 swap 已启用);
· 重启后,系统会自动读取 fstab 并激活 swap。
9. 使用哪个命令可以查看文件系统的 UUID?
核心命令为 blkid,直接执行即可查看所有磁盘 / 分区的 UUID、文件系统类型等信息,常用用法:
查看所有设备的 UUID:blkid;
查看指定分区的 UUID:blkid /dev/sdb1;
辅助命令:lsblk -f(以树形结构显示分区,包含 UUID 和文件系统类型,更直观)。

