文章目录
- Linux进程管理
-
- 前言
- 一、进程核心基础概念
-
- [1.1 什么是进程?进程与程序的区别](#1.1 什么是进程?进程与程序的区别)
- [1.2 进程核心属性](#1.2 进程核心属性)
- [1.3 CentOS7特殊进程机制](#1.3 CentOS7特殊进程机制)
- 二、Linux进程五大核心状态
-
- [2.1 运行状态(R)](#2.1 运行状态(R))
- [2.2 休眠状态(S/D)](#2.2 休眠状态(S/D))
- [2.3 停止状态(T)](#2.3 停止状态(T))
- [2.4 僵尸状态(Z)](#2.4 僵尸状态(Z))
- [2.5 死亡状态(X)](#2.5 死亡状态(X))
- 三、CentOS7进程查看实战命令
-
- [3.1 静态查看:ps 命令(核心重点)](#3.1 静态查看:ps 命令(核心重点))
-
- 常用组合参数(生产通用)
- 核心参数解析
- [ps -aux 输出字段详解](#ps -aux 输出字段详解)
- [3.2 动态实时监控:top 命令](#3.2 动态实时监控:top 命令)
- [3.3 精准筛选查询:pgrep、pidof](#3.3 精准筛选查询:pgrep、pidof)
- [3.4 进程端口关联查询:lsof、netstat](#3.4 进程端口关联查询:lsof、netstat)
- 四、进程启停与信号控制(kill系列命令)
-
- [4.1 常用进程信号(核心3种)](#4.1 常用进程信号(核心3种))
- [4.2 核心终止命令实战](#4.2 核心终止命令实战)
- 五、前台、后台进程管理
-
- [5.1 前台进程 & 后台进程区别](#5.1 前台进程 & 后台进程区别)
- [5.2 后台进程实战操作](#5.2 后台进程实战操作)
- [5.3 企业级后台守护方案](#5.3 企业级后台守护方案)
- 六、进程优先级调度(CPU资源分配)
-
- [6.1 优先级核心规则](#6.1 优先级核心规则)
- [6.2 优先级调整命令](#6.2 优先级调整命令)
- [七、CentOS7 Systemd进程管理机制(核心特性)](#七、CentOS7 Systemd进程管理机制(核心特性))
-
- [7.1 Systemd核心优势](#7.1 Systemd核心优势)
- [7.2 服务进程管理命令](#7.2 服务进程管理命令)
- 八、生产环境进程异常排查实战
-
- [8.1 服务器CPU占用过高排查](#8.1 服务器CPU占用过高排查)
- [8.2 僵尸进程排查与解决](#8.2 僵尸进程排查与解决)
- [8.3 端口占用进程排查](#8.3 端口占用进程排查)
- 九、总结与学习复盘
- 十、运维常用进程命令速查清单(收藏自用)
-
- [10.1 进程静态查看命令](#10.1 进程静态查看命令)
- [10.2 进程动态监控命令](#10.2 进程动态监控命令)
- [10.3 进程PID精准查询](#10.3 进程PID精准查询)
- [10.4 进程端口关联排查](#10.4 进程端口关联排查)
- [10.5 进程启停与信号控制](#10.5 进程启停与信号控制)
- [10.6 前后台进程切换与守护](#10.6 前后台进程切换与守护)
- [10.7 进程优先级调整](#10.7 进程优先级调整)
- [10.8 Systemd服务进程管理](#10.8 Systemd服务进程管理)
- [10.9 生产异常排查速查](#10.9 生产异常排查速查)
Linux进程管理
专栏系列:云计算学习之路
适配系统:CentOS 7.x
难度等级:入门进阶(运维必备核心)
适用人群:云计算初学者、Linux运维工程师、服务器运维学习者
学习目标:彻底理解Linux进程核心原理、掌握CentOS7全系进程管理命令、熟练排查进程异常、掌握systemd进程启动机制,具备基础服务器性能与进程调度能力
前言
在Linux服务器运维与云计算场景中,进程是系统运行的核心载体 。服务器所有业务、服务、脚本、程序的运行,本质都是进程的调度与执行。CentOS7相较于CentOS6最大的核心变革之一,就是摒弃了传统的SysVinit启动机制,全面采用Systemd作为系统与进程管理核心,实现了并行启动、进程托管、服务自动化管理,大幅提升了服务器启动效率与运行稳定性。
无论是日常服务器卡顿排查、端口占用排查、服务启停、后台任务守护,还是云计算集群中节点进程监控,都离不开进程管理知识。本文将从零深入,系统性讲解CentOS7下Linux进程的核心概念、状态分类、查看工具、启停控制、优先级调度、后台进程管理、异常进程排查等全维度内容,打造可直接落地的运维实战教程。
一、进程核心基础概念
1.1 什么是进程?进程与程序的区别
很多初学者容易混淆程序与进程,二者是静态与动态的核心区别:
-
程序 :存放在磁盘上的静态二进制文件、脚本代码,无资源占用、无运行状态,永久存储,比如
nginx、java程序、shell脚本。 -
进程 :程序被加载到内存中运行的动态实例 ,是Linux系统资源分配(CPU、内存、IO)的最小单位,拥有独立的虚拟内存空间、进程ID、运行状态,程序终止后进程销毁,资源释放。
简单总结:程序是静态代码,进程是运行中的程序,一个程序可以同时启动多个进程。
1.2 进程核心属性
CentOS7系统中,每一个进程都会被内核分配唯一标识与运行属性,核心属性如下:
-
PID(进程ID):系统唯一进程标识,是操作进程的核心依据,所有进程启停、调度、监控均依赖PID。
-
PPID(父进程ID):创建当前进程的父进程ID,Linux所有进程均由父进程衍生,形成进程树结构。
-
UID/GID:进程运行的用户与用户组身份,决定进程的文件访问、系统操作权限。
-
进程状态:标识进程当前运行状态(运行、休眠、停止、僵尸等)。
-
资源占用:进程占用的CPU使用率、物理内存、虚拟内存、IO资源。
-
终端绑定:区分前台进程(绑定终端)与后台进程(脱离终端)。
1.3 CentOS7特殊进程机制
CentOS7所有进程的始祖进程为systemd (PID=1),替代了CentOS6的init进程。系统开机内核初始化完成后,会优先启动systemd进程,由其并行启动系统所有服务进程、用户进程,负责全系统进程的托管、重启、回收,是CentOS7进程管理的核心基石。
二、Linux进程五大核心状态
Linux内核严格定义了进程运行状态,通过状态可以快速判断进程是否正常、是否卡死、是否异常,是运维排查的核心依据,CentOS7通用进程状态分为5类:
2.1 运行状态(R)
全称Running,进程正在CPU上执行,或处于就绪队列,等待CPU调度。处于该状态的进程会持续占用CPU资源,正常业务进程高频运行时均为R状态。
2.2 休眠状态(S/D)
-
S(可中断休眠):最常见状态,进程等待资源(网络、文件、用户输入),可接收系统信号唤醒,大部分后台服务默认处于S状态。
-
D(不可中断休眠) :进程正在等待硬件IO(磁盘读写、网卡数据),无法被kill命令终止,多为磁盘卡顿、挂载异常导致,长时间D状态会引发服务器卡死。
2.3 停止状态(T)
全称Stopped,进程被手动暂停,不再占用CPU资源。可通过快捷键 Ctrl+Z 将前台进程暂停转为T状态,可通过命令恢复运行。
2.4 僵尸状态(Z)
全称Zombie,子进程运行结束退出,但父进程未调用系统接口回收子进程资源,导致子进程PID残留系统中。僵尸进程不占用CPU、内存,但会占用系统PID资源,大量僵尸进程会导致系统无法新建进程,属于严重异常状态。
核心解决办法:重启父进程或直接重启系统,CentOS7的systemd会自动回收大部分孤儿僵尸进程。
2.5 死亡状态(X)
进程彻底结束、资源完全回收,瞬时状态,日常运维几乎无法观测到。
三、CentOS7进程查看实战命令
进程查看是运维高频操作,CentOS7提供静态查看、动态监控、筛选查询三类工具,覆盖所有运维场景。
3.1 静态查看:ps 命令(核心重点)
ps 是静态查看进程快照的核心命令,一次性输出当前系统进程状态,不会实时刷新,适合精准查询进程信息、PID、资源占用。
常用组合参数(生产通用)
bash
# 查看当前终端所有进程
ps -l
# 查看系统所有进程(完整信息、包含全部用户进程)
ps -aux
# 树形展示进程父子关系
ps -efH
核心参数解析
-
-a:显示所有用户的进程
-
-u:显示进程所属用户、CPU、内存占用详情
-
-x:显示无终端绑定的后台进程、守护进程
-
-e:显示系统所有进程(等同于-A)
-
-f:显示完整的进程启动命令、PPID
ps -aux 输出字段详解
-
USER:进程运行用户
-
PID:进程ID
-
%CPU:进程CPU占用百分比
-
%MEM:进程物理内存占用百分比
-
VSZ:虚拟内存占用
-
RSS:物理内存占用
-
TTY:进程绑定终端,?代表后台守护进程
-
STAT:进程状态(R/S/D/T/Z)
-
START:进程启动时间
-
TIME:进程累计占用CPU时间
-
COMMAND:进程启动命令
3.2 动态实时监控:top 命令
top 是Linux实时进程监控工具,默认3秒刷新一次,动态展示系统进程资源占用、负载状态,是排查服务器卡顿、CPU内存爆满的首选命令。
基础使用
bash
# 开启实时进程监控
top
# 指定1秒刷新一次
top -d 1
# 只监控指定PID进程
top -p PID
top交互快捷键(运维必备)
-
P:按CPU占用排序(默认)
-
M:按内存占用排序
-
N:按PID排序
-
z:高亮显示运行进程
-
k:输入PID,直接终止进程
-
q:退出监控
顶部同步展示系统负载、总进程数、运行/休眠/僵尸进程数、CPU、内存、交换分区整体使用情况,可快速定位系统瓶颈。
3.3 精准筛选查询:pgrep、pidof
无需配合grep筛选,直接根据进程名查询PID,简洁高效,适合脚本自动化使用。
bash
# 根据进程名查询PID(只输出PID)
pgrep nginx
# 精准匹配进程名,输出PID+进程名
pidof java
3.4 进程端口关联查询:lsof、netstat
运维高频场景:查询端口对应的进程、查杀异常端口进程。CentOS7默认需安装net-tools工具。
bash
# 安装工具
yum install net-tools lsof -y
# 查询端口对应的进程
netstat -tulpn | grep 80
# 查询进程占用的所有文件与端口
lsof -p PID
四、进程启停与信号控制(kill系列命令)
Linux进程无法直接强制删除,必须通过进程信号实现启停、重启、强制终止,这是区别于Windows的核心特性。
4.1 常用进程信号(核心3种)
Linux支持64种进程信号,运维仅需掌握3种核心信号:
-
1 (SIGHUP):重新加载配置,不终止进程,平滑重启服务(生产常用,无业务中断)
-
15 (SIGTERM):默认终止信号,优雅关闭进程,进程会先保存数据、释放资源后退出(安全终止)
-
9 (SIGKILL):强制立即终止进程,进程无法拒绝、无法保存数据,仅用于进程卡死、僵尸进程场景(慎用)
4.2 核心终止命令实战
bash
# 1. 优雅终止进程(默认15信号,推荐优先使用)
kill PID
# 2. 平滑重启进程(重载配置,不中断业务)
kill -1 PID
# 3. 强制杀死卡死进程(谨慎使用,易丢数据)
kill -9 PID
# 4. 根据进程名批量杀死进程(无需查PID)
killall 进程名
# 5. 强制批量杀死所有同名进程
killall -9 进程名
运维禁忌 :禁止随意执行 kill -9 1,PID=1为systemd系统核心进程,杀死后直接导致服务器宕机、数据丢失。日常终止进程优先使用默认kill(15信号),仅进程无响应时使用-9强制终止。
五、前台、后台进程管理
Linux终端默认只能运行一个前台进程,关闭终端后前台进程直接终止,而运维业务需要程序永久后台运行,因此后台进程管理是必备技能。
5.1 前台进程 & 后台进程区别
-
前台进程:绑定当前终端,占用终端界面,终端关闭、断开连接后进程自动终止。
-
后台进程:脱离终端控制,在内存后台运行,关闭终端、断开SSH连接不影响进程运行。
5.2 后台进程实战操作
bash
# 1. 启动程序时直接放入后台
执行命令 &
# 示例:后台运行脚本
sh test.sh &
# 2. 将正在运行的前台进程暂停并放入后台
# 步骤1:终端按下 Ctrl+Z 暂停进程(转为T停止状态)
# 步骤2:bg 恢复后台运行
bg
# 3. 查看当前终端所有后台任务
jobs
# 4. 将后台进程调回前台
fg 任务编号
# 5. 永久脱离终端(nohup 守护,关闭终端不退出)
nohup sh test.sh
5.3 企业级后台守护方案
单纯nohup无法实现进程崩溃自动重启,CentOS7生产环境推荐使用 systemd托管 或screen 工具实现永久后台守护。
bash
# 安装screen
yum install screen -y
# 新建后台会话
screen -S 会话名
# 退出会话(保留进程运行):Ctrl+A+D
# 恢复会话
screen -r 会话名
六、进程优先级调度(CPU资源分配)
Linux支持调整进程优先级,控制进程CPU资源占用比例,核心业务进程可调高优先级,非核心进程调低优先级,避免抢占系统资源。
6.1 优先级核心规则
-
优先级取值范围:-20 ~ 19
-
数值越小,优先级越高,-20为最高优先级,19为最低优先级
-
系统默认进程优先级为0
6.2 优先级调整命令
bash
# 1. 启动进程时指定优先级
nice -n 优先级数值 执行命令
# 示例:以最高优先级运行java程序
nice -n -20 java -jar app.jar
# 2. 修改已运行进程的优先级
renice 优先级数值 -p PID
七、CentOS7 Systemd进程管理机制(核心特性)
CentOS7最大的进化就是Systemd进程管理体系,彻底替代传统init串行启动,实现并行启动、进程托管、故障自重启、依赖管理,是云计算服务器稳定运行的核心。
7.1 Systemd核心优势
-
开机并行启动所有服务,大幅缩短开机时间
-
统一托管系统服务进程,自动回收僵尸进程
-
支持服务故障自动重启、开机自启配置
-
统一日志管理、进程状态管理
7.2 服务进程管理命令
bash
# 查看所有系统服务进程状态
systemctl list-units --type=service
# 启动/停止/重启服务进程
systemctl start/stop/restart nginx
# 设置服务开机自启/关闭自启
systemctl enable/disable nginx
# 查看服务进程详细状态、日志
systemctl status nginx
八、生产环境进程异常排查实战
8.1 服务器CPU占用过高排查
-
执行
top,按P排序,定位高CPU占用PID -
ps -ef | grep PID查看进程业务用途 -
非核心进程优雅kill终止,核心进程排查代码、日志是否死循环
8.2 僵尸进程排查与解决
-
ps -aux | grep Z筛选所有僵尸进程 -
查看僵尸进程PPID,定位异常父进程
-
重启父进程,或重启系统彻底清理
8.3 端口占用进程排查
-
netstat -tulpn | grep 端口号查找占用进程PID -
确认进程用途,无需使用则kill终止
九、总结与学习复盘
本文系统性讲解了CentOS7 Linux进程管理的全部核心知识点,从基础概念、进程状态、查询命令、信号控制、后台调度、优先级调整,到CentOS7专属的Systemd机制、生产异常排查,覆盖了运维日常99%的进程管理场景。
核心学习复盘:
-
进程是运行的程序实例,PID为进程唯一标识,systemd是CentOS7所有进程的始祖。
-
R/S/D/T/Z五大进程状态是排查异常的核心依据,D、Z状态为高频异常状态。
-
ps静态查进程、top动态监控、kill信号控启停,是三大核心工具组。
-
优先使用15信号优雅终止进程,9强制信号仅用于卡死进程。
-
CentOS7的Systemd机制是服务进程托管的核心,掌握systemctl命令是运维必备能力。
后续云计算学习之路将持续更新CentOS7服务管理、磁盘管理、网络配置、防火墙、云服务器优化等核心教程,持续夯实云计算运维基础。
十、运维常用进程命令速查清单(收藏自用)
本节整理全文生产高频、可直接复制使用的Linux进程管理命令,无冗余内容,适合日常运维、面试复盘、快速排查问题直接套用,是运维常备实操清单。
10.1 进程静态查看命令
bash
# 查看当前终端进程
ps -l
# 查看系统所有完整进程(生产最常用)
ps -aux
# 树形展示进程父子关系
ps -efH
# 筛选指定进程
ps -aux | grep 进程名
10.2 进程动态监控命令
bash
# 默认3秒刷新全局进程监控
top
# 1秒高频刷新,排查瞬时CPU峰值
top -d 1
# 单独监控指定PID进程
top -p PID
# top排序快捷键:P(CPU)、M(内存)、N(PID)
10.3 进程PID精准查询
bash
# 仅输出进程PID
pgrep nginx
# 输出PID+进程名
pidof java
# 查看进程详细启动信息
ps -ef | grep PID
10.4 进程端口关联排查
bash
# 安装网络、文件查询工具
yum install net-tools lsof -y
# 查看端口占用进程
netstat -tulpn | grep 端口号
# 查看指定PID占用的文件、端口资源
lsof -p PID
# 查看所有监听端口与对应进程
netstat -tulpn
10.5 进程启停与信号控制
bash
# 优雅终止进程(优先使用,15信号)
kill PID
# 平滑重启、重载配置(不中断业务)
kill -1 PID
# 强制杀死卡死/僵尸进程(慎用)
kill -9 PID
# 批量优雅杀死同名进程
killall 进程名
# 批量强制杀死同名进程
killall -9 进程名
10.6 前后台进程切换与守护
bash
# 命令直接后台运行
sh test.sh &
# Ctrl+Z 暂停前台进程后,放入后台继续运行
bg
# 查看当前终端所有后台任务
jobs
# 后台任务调回前台
fg 任务编号
# 永久后台守护(脱离终端,日志输出至nohup.out)
nohup sh test.sh &
# screen后台会话守护
yum install screen -y
screen -S 自定义会话名 # 新建会话
Ctrl+A+D # 退出会话(保留进程)
screen -r 会话名 # 恢复会话
10.7 进程优先级调整
bash
# 启动进程时设置优先级(-20~19,数值越小优先级越高)
nice -n -10 java -jar app.jar
# 修改已运行进程优先级
renice 5 -p PID
10.8 Systemd服务进程管理
bash
# 查看所有系统服务进程
systemctl list-units --type=service
# 启停重启服务
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
# 开机自启管理
systemctl enable nginx
systemctl disable nginx
# 查看服务进程状态与报错日志
systemctl status nginx
10.9 生产异常排查速查
bash
# 排查CPU占用最高进程
top # P键排序,定位高负载PID
# 排查所有僵尸进程
ps -aux | grep Z
# 排查端口占用冲突
netstat -tulpn | grep 端口号
# 查看进程详细资源占用与启动命令
ps -aux | grep PID