当前位置:首页>Linux>Linux 运维必学(十四)| 程序与进程管理+SELinux 全网最简实战指南

Linux 运维必学(十四)| 程序与进程管理+SELinux 全网最简实战指南

  • 2026-10-09 08:26:32
Linux 运维必学(十四)| 程序与进程管理+SELinux 全网最简实战指南
运维日常工作,核心就是两件事:管进程、控权限。
很多服务器异常、服务闪退、端口占用、文件访问报错,根源都是进程管理不到位、SELinux权限拦截。
今天一文吃透Linux进程全体系+SELinux强制安全机制,摒弃冗余理论,全是可落地的实操干货、面试核心考点,新手可直接收藏复用。

一、基础认知:程序、进程、守护进程

很多新手容易混淆程序和进程,二者本质区别非常清晰:
  1. 程序(Program)存放在硬盘、光盘等存储设备中的静态二进制文件,是被动的实体,不运行不占用内存资源。
  2. 进程(Process)程序被触发运行后,加载到内存中的动态运行实体。系统会分配唯一PID(进程ID),是系统资源调度的最小单元。 简单理解:程序是静态文件,进程是运行中的程序。
  3. 守护进程(Daemon)常驻内存、后台持续运行的系统/服务进程,开机自启、持续监听请求,比如nginx、mysqld、crond,是服务器服务运行的核心载体。

二、进程核心机制:父子进程

Linux所有进程都遵循父子进程机制,除了系统初始进程,所有进程都由父进程创建。

1、核心特性

▪️ 每个子进程都有唯一PPID(父进程ID) 
▪️ 子进程默认继承父进程的环境变量、权限属性
▪️ 父进程退出,子进程会成为孤儿进程,由系统进程接管

2、创建流程:fork + exec

1.fork复制:父进程复制出一个完全一致的子进程,二者PID不同,子进程拥有PPID标识 
2.exec执行:子进程覆盖原有代码,加载新程序执行,完成进程创建

三、Shell工作管理(Job Control)

核心定位:单个终端中,同时运行多个任务,自由切换前后台,仅对当前bash生效。

1、适用范围与限制

▪️ 仅当前终端bash生效,无法管理其他终端进程 
▪️ 仅管理当前shell的子进程 
▪️ 后台进程无法读取终端输入,否则会暂停卡死

2、前台 & 后台区别

前台进程:独占终端,可直接交互操作,Ctrl+C可终止
后台进程:静默运行,不占用终端,Ctrl+C无法终止,分为运行中(running)和暂停(stop)两种状态 
💡 避坑:后台进程的输出/报错仍会打印在屏幕,生产建议重定向到日志文件

3、高频实操指令

  • 指令 & :直接将任务放入后台运行 示例:ping www.baidu.com
  • Ctrl+Z :将当前前台任务移入后台暂停
  • jobs :查看后台任务 -l:显示任务PID | -r:仅看运行中任务 | -s:仅看暂停任务
  • fg %任务号 :将后台任务切回前台(%可省略)
  • bg %任务号 :将后台暂停任务转为运行状态
💡 符号规则:+代表最近放入后台的任务,-代表倒数第二个后台任务。

4、后台任务离线避坑(重点)

普通后台任务是Shell后台,退出终端会直接中断进程!

永久后台执行方案

1. nohup 指令 & :终端关闭仍持续运行,执行默认生成 nohup.out 日志保存输出 
示例:nohup sh test.sh &
💡 硬性限制:不支持bash内置命令,仅可执行外部程序

2. at定时任务:适合一次性离线任务


四、进程状态查看:ps / top / pstree

进程查看是运维排障基础,三个工具分工明确:静态快照、动态监控、树形梳理。

1、ps 静态查看(瞬间进程快照)

常用组合指令

▪️ ps -l :仅查看当前用户bash相关进程 
▪️ ps aux :查看系统所有进程(生产最常用) 
▪️ ps axjf :查看进程树结构,展示父子关系

2、关键进程状态STAT(必背)

▪️R:运行中,占用CPU执行任务 
▪️S:睡眠空闲,可被信号唤醒 
▪️D:不可唤醒睡眠,多为IO阻塞(磁盘故障高发) 
▪️T:暂停状态,后台暂停或调试中 
▪️Z:僵尸进程,进程终止但资源未释放,占用内存

ps -l 核心字段详解(面试必考)

▪️ F:进程权限标记,4=root权限、1=仅fork未执行 
▪️ UID:进程所属用户ID 
▪️ PID/PPID:进程ID/父进程ID 
▪️ C:CPU使用率占比 
▪️ PRI/NI:进程优先级、Nice值 
▪️ ADDR/SZ/WCHAN:内核地址、占用内存大小、进程运行状态 
▪️ TTY:运行终端,?代表无终端守护进程 
▪️ TIME:进程实际占用CPU时间

ps aux 核心字段释义

USER进程所属用户、%CPU/%MEM资源占比、VSZ虚拟内存、RSS物理内存、START启动时间、COMMAND启动指令,是生产排查进程资源占用的核心依据。

3、top 动态实时监控

实时刷新系统进程资源占用,默认5秒刷新一次,是排查CPU/内存占用过高的核心工具。

常用参数

▪️ top -d 2 :设置2秒刷新一次 
▪️ 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调度压力大) 
▪️ st:虚拟机被抢占CPU资源

八、特殊文件与进程查询工具

1、SUID/SGID文件查询

查询系统所有特殊权限文件,排查权限漏洞: find / -perm /6000

2、/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(默认):仅管控网络服务,本机程序宽松,生产通用 
- minimum:极简防护,仅保护核心进程 
- mls:多级严格限制,高安全等级专用

3、安全上下文(核心重点)

格式:身份:角色:类型(Identify:role:type) 真正决定访问权限的只有类型字段!
▪️ 身份:unconfined_u(不受限用户)、system_u(系统用户) 
▪️ 角色:object_r(文件资源)、system_r(进程) 
▪️ 类型:进程domain与文件type必须匹配,才能正常访问

4、SELinux三种运行模式

▪️enforcing 强制模式:正常运行,拦截违规访问,记录日志 
▪️permissive 宽容模式:不拦截,仅告警记录,用于调试排错 
▪️disabled 关闭模式:完全不生效
💡 模式切换规则: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 正确类型 "路径(/.*)?"
参数:-a新增、-m修改、-d删除、-l查询

十一、全文核心总结

  1. 进程管理:核心是区分静态程序与动态进程,熟练掌握前后台任务切换、进程查看、信号终止、优先级调控,是服务器运维基础。
  2. 系统监控:ps/top/netstat/free 组合使用,可快速排查CPU、内存、端口、IO各类系统异常。
  3. SELinux:Linux核心安全屏障,绝大多数权限报错源于上下文不匹配、规则未开启,优先用宽容模式调试、restorecon恢复默认配置,无需随意关闭。
整套知识点覆盖运维日常排错、面试高频考点,实操性拉满,建议收藏常备!

最新文章

随机文章