Linux 运维必学(十四)| 程序与进程管理+SELinux 全网最简实战指南
很多服务器异常、服务闪退、端口占用、文件访问报错,根源都是进程管理不到位、SELinux权限拦截。今天一文吃透Linux进程全体系+SELinux强制安全机制,摒弃冗余理论,全是可落地的实操干货、面试核心考点,新手可直接收藏复用。
一、基础认知:程序、进程、守护进程
很多新手容易混淆程序和进程,二者本质区别非常清晰:- 程序(Program)存放在硬盘、光盘等存储设备中的静态二进制文件,是被动的实体,不运行不占用内存资源。
- 进程(Process)程序被触发运行后,加载到内存中的动态运行实体。系统会分配唯一PID(进程ID),是系统资源调度的最小单元。 简单理解:程序是静态文件,进程是运行中的程序。
- 守护进程(Daemon)常驻内存、后台持续运行的系统/服务进程,开机自启、持续监听请求,比如nginx、mysqld、crond,是服务器服务运行的核心载体。
二、进程核心机制:父子进程
Linux所有进程都遵循父子进程机制,除了系统初始进程,所有进程都由父进程创建。1、核心特性
▪️ 父进程退出,子进程会成为孤儿进程,由系统进程接管2、创建流程:fork + exec
1.fork复制:父进程复制出一个完全一致的子进程,二者PID不同,子进程拥有PPID标识 2.exec执行:子进程覆盖原有代码,加载新程序执行,完成进程创建
三、Shell工作管理(Job Control)
核心定位:单个终端中,同时运行多个任务,自由切换前后台,仅对当前bash生效。1、适用范围与限制
▪️ 仅当前终端bash生效,无法管理其他终端进程 2、前台 & 后台区别
前台进程:独占终端,可直接交互操作,Ctrl+C可终止后台进程:静默运行,不占用终端,Ctrl+C无法终止,分为运行中(running)和暂停(stop)两种状态 💡 避坑:后台进程的输出/报错仍会打印在屏幕,生产建议重定向到日志文件3、高频实操指令
- 指令 & :直接将任务放入后台运行 示例:ping www.baidu.com
- jobs :查看后台任务 -l:显示任务PID | -r:仅看运行中任务 | -s:仅看暂停任务
💡 符号规则:+代表最近放入后台的任务,-代表倒数第二个后台任务。4、后台任务离线避坑(重点)
普通后台任务是Shell后台,退出终端会直接中断进程!永久后台执行方案
1. nohup 指令 & :终端关闭仍持续运行,执行默认生成 nohup.out 日志保存输出 💡 硬性限制:不支持bash内置命令,仅可执行外部程序2. at定时任务:适合一次性离线任务
四、进程状态查看:ps / top / pstree
进程查看是运维排障基础,三个工具分工明确:静态快照、动态监控、树形梳理。1、ps 静态查看(瞬间进程快照)
常用组合指令
▪️ ps -l :仅查看当前用户bash相关进程 ▪️ ps aux :查看系统所有进程(生产最常用) ▪️ ps axjf :查看进程树结构,展示父子关系2、关键进程状态STAT(必背)
▪️D:不可唤醒睡眠,多为IO阻塞(磁盘故障高发) ps -l 核心字段详解(面试必考)
▪️ F:进程权限标记,4=root权限、1=仅fork未执行 ▪️ ADDR/SZ/WCHAN:内核地址、占用内存大小、进程运行状态 ps aux 核心字段释义
USER进程所属用户、%CPU/%MEM资源占比、VSZ虚拟内存、RSS物理内存、START启动时间、COMMAND启动指令,是生产排查进程资源占用的核心依据。3、top 动态实时监控
实时刷新系统进程资源占用,默认5秒刷新一次,是排查CPU/内存占用过高的核心工具。常用参数
▪️ top -b -n 2 > top.txt :静态输出2次数据,保存为日志文件(排障留存)交互快捷键
P:按CPU排序 | M:按内存排序 | N:按PID排序 | k:杀死指定PID进程 | r:修改进程Nice值 | q:退出top核心输出字段:默认展示总进程数、运行/睡眠/暂停/僵尸进程数、CPU全局占用、内存/交换分区使用、单进程资源详情,是整机负载排查核心工具。4、pstree 进程树查看
直观展示所有进程父子层级关系,快速溯源进程来源。 常用参数:-p(显示PID)、-u(显示所属用户)
五、进程管理与信号控制
进程启停、重启、终止,本质都是向进程发送信号(signal)。1、核心信号(生产高频)
▪️-1 (SIGHUP):重载配置,不重启进程,平滑刷新参数,无业务中断 ▪️-2 (SIGINT):等价Ctrl+C,正常终止前台进程 ▪️-9 (SIGKILL):强制杀死进程,系统直接回收,容易产生残留文件、脏数据,生产禁止随意使用▪️-15 (SIGTERM 默认):优雅终止,进程自动收尾资源、结束业务,优先使用 ▪️-19 (SIGSTOP):等价Ctrl+Z,暂停进程运行,不销毁进程2、实操管理指令
▪️ kill -信号 PID :精准管理单个进程 示例:kill -15 1234(优雅终止PID1234进程)▪️ killall -信号 进程名 :批量管理同名进程 示例:killall -9 nginx(强制杀死所有nginx进程)
六、进程优先级:Nice值调控
CPU调度优先规则:PRI值越小,优先级越高,越先被CPU执行。PRI由系统内核动态调整,用户无法直接修改,只能通过Nice值间接调控。1、核心规则
▪️ 计算公式:PRI(new) = PRI(old) + nice ▪️ Nice值范围:-20 ~ 19,数值越小,优先级越高 ▪️ root用户:可调整所有进程,全范围修改 ▪️ 普通用户:仅能调高Nice值(降低优先级),无法抢占系统资源▪️ nice:启动时设置,相对叠加值,在原有优先级基础上偏移 ▪️ renice:修改已运行进程,绝对覆盖值,直接设定固定Nice值▪️ nice -n -5 sh test.sh :启动进程时直接设置优先级 ▪️ renice -10 1234 :修改已存在PID进程的优先级
七、系统资源全方位监控指令
运维排查系统卡顿、负载过高,必备一套资源监控指令:1. free -h :查看内存使用清晰展示物理内存、缓存、交换分区占用,Linux缓存机制会预存常用文件,加速访问,属于正常现象。
2. uname -a :查看系统内核信息可查看内核版本、硬件架构、系统平台,适配软件安装环境校验。
3. uptime :查看系统负载展示开机时长、1/5/15分钟平均负载,快速判断服务器是否过载。
4. netstat -tulnp :查看端口与进程排查端口占用、监听服务、进程PID,解决端口冲突问题。
5. dmesg :查看内核日志排查开机报错、硬件异常、进程崩溃内核提示。
6. vmstat 1 3 :实时监控系统状态每秒刷新1次,共3次,监控CPU、内存、磁盘IO、进程切换开销。
▪️ si:swap读入内存、so:内存写入swap(数值大代表内存不足) ▪️ bi:磁盘读块、bo:磁盘写块(数值高代表磁盘IO瓶颈) ▪️ in:硬件中断次数、cs:进程上下文切换(过高代表CPU调度压力大)
八、特殊文件与进程查询工具
1、SUID/SGID文件查询
查询系统所有特殊权限文件,排查权限漏洞: find / -perm /60002、/proc 虚拟目录
内存映射目录,实时存放系统进程数据,每个PID对应一个子目录,可查看进程实时内存、运行参数,重启数据清空。3、高频进程查询指令
- fuser :查询占用文件/目录的进程 示例:fuser -uv . 查看当前目录占用进程
- lsof :列出进程打开的所有文件、端口、目录 示例:lsof -u root 查看root用户所有进程打开文件
- pidof :快速查询进程PID 示例:pidof nginx 直接获取nginx进程号
九、SELinux 安全机制核心详解
很多服务访问报错、文件权限正常却无法访问,90%是SELinux拦截导致。1、DAC与MAC核心区别
DAC自主访问控制(传统权限)文件所有者自主设置rwx权限,管控宽松,权限极易泄露。MAC强制访问控制(SELinux)系统内核强制管控,管控主体是进程,而非用户,用户无法私自修改规则,安全性极高。2、SELinux核心三要素
▪️ 政策:系统安全规则集合,CentOS7 三大官方策略: - targeted(默认):仅管控网络服务,本机程序宽松,生产通用 3、安全上下文(核心重点)
格式:身份:角色:类型(Identify:role:type) 真正决定访问权限的只有类型字段!▪️ 身份:unconfined_u(不受限用户)、system_u(系统用户) ▪️ 角色:object_r(文件资源)、system_r(进程) ▪️ 类型:进程domain与文件type必须匹配,才能正常访问4、SELinux三种运行模式
▪️enforcing 强制模式:正常运行,拦截违规访问,记录日志 ▪️permissive 宽容模式:不拦截,仅告警记录,用于调试排错 💡 模式切换规则:enforcing与permissive可在线切换,disabled与其他模式切换需重启服务器▪️ getenforce :快速查看当前运行模式 ▪️ sestatus :查看完整SELinux状态、策略、上下文 ▪️ps -eZ:查看进程是否受SELinux管控,unconfined_t代表无限制进程 ▪️ setenforce 0/1 :临时切换宽容/强制模式 ▪️ 永久修改:编辑 /etc/selinux/config 文件,重启生效
十、SELinux规则与上下文实操管理
1、规则查询与修改
▪️ getsebool -a :查看所有SELinux布尔规则 ▪️ sestatus -b :查看所有规则开关状态 ▪️ seinfo -t :查看系统所有SELinux类型字段 ▪️ sesearch -s 进程域 -t 文件类型 :查询进程是否有权限访问对应文件 ▪️ setsebool -P 规则名 1/0 :永久开启/关闭对应规则(-P写入配置,永久生效) 示例:setsebool -P httpd_enable_homedirs 1 开启网站访问家目录权限2、安全上下文修改(高频排错)
▪️ chcon -t 类型 文件 :临时修改文件SELinux类型(重启失效) ▪️ restorecon -Rv 目录 :恢复文件默认正确上下文(排错首选) ▪️ semanage fcontext :永久固化目录默认上下文,重启不失效 完整用法:semanage fcontext -a -t 正确类型 "路径(/.*)?"
十一、全文核心总结
- 进程管理:核心是区分静态程序与动态进程,熟练掌握前后台任务切换、进程查看、信号终止、优先级调控,是服务器运维基础。
- 系统监控:ps/top/netstat/free 组合使用,可快速排查CPU、内存、端口、IO各类系统异常。
- SELinux:Linux核心安全屏障,绝大多数权限报错源于上下文不匹配、规则未开启,优先用宽容模式调试、restorecon恢复默认配置,无需随意关闭。
整套知识点覆盖运维日常排错、面试高频考点,实操性拉满,建议收藏常备!