前言Linux 系统中所有程序运行都依托进程服务器运维、程序调试、服务器故障排查都离不开进程管理。很多新手只会简单使用ps、kill一旦遇到远程后台任务中断、进程杀不掉、占用 CPU 等高负载场景就束手无策。本文附上带真实操作时间的命令兼顾理论 实操适合运维入门、面试复习。一、基础概念分清程序、软件、进程、线程本节核心重点静态 vs 动态程序是磁盘静态文件进程是运行中的动态实例核心区分点fork 创建机制Linux 所有进程都是父进程 fork 生成bash 是绝大多数用户命令的父进程操作系统四大职能进程调度任务管理是运维核心其余三块作为底层基础进程自带独立资源空间线程共享进程资源多线程更轻量化。概念详解程序磁盘上静态、未运行的可执行文件不占用 CPU、内存资源。软件完整套装包含程序、配置文件、帮助手册、依赖包如 httpd、nginx。进程程序加载运行后的实例会占用 CPU、内存、磁盘 IO、网络端口是操作系统资源调度最小单位。线程进程内部轻量执行单元同一进程内线程共享内存空间。进程组成必记字段独立内存地址空间、运行权限凭据、多条执行线程、运行状态。进程运行环境局部 / 全局变量、CPU 调度上下文、打开的文件、占用端口。fork 机制终端执行任意命令当前 bash 父进程调用 fork 生成子进程示例[lizihancentos7 ~11:41:09]$sleep5sleep 是 bash 的子进程。操作系统四大核心职责任务管理进程 / 线程调度本文核心设备管理网卡、硬盘、显示器硬件驱动文件系统文件存储、权限、目录管理内存管理内存分配、回收、Swap 交换分区二、进程查看ps 命令全场景实操本节核心重点ps 三种参数风格UNIX (-)、GNU (--)、BSD (无横杠)日常混用无冲突高频命令区分ps -ef看完整信息、ps axu看资源占用、ps axf看父子进程树关键字段释义面试必考PID 进程 ID、PPID 父进程 ID、% CPU/% MEM 资源占用、TTY 终端筛选用法按用户、终端、进程名过滤支持自定义输出字段、按 CPU / 内存排序排查高负载。1. 基础查看命令讲解ps -e查看系统全部进程重点仅展示基础字段适合快速确认进程是否存在[lizihancentos7 ~11:41:09]$ps-ePID TTY TIME CMD1? 00:00:02 systemd2? 00:00:00 kthreadd字段释义PID进程唯一 IDTTY绑定终端?代表无终端后台守护进程TIME进程累计占用 CPU 时长不是程序运行时间高频易错点CMD执行命令名称ps -ef运维最常用完整进程信息重点新增 UID、PPID、STIME排查父子进程、进程启动时间首选[lizihancentos7 ~11:41:09]$ps-ef|head-n5UIDPIDPPIDC STIME TTY TIME CMD root10008:45 ? 00:00:02 /usr/lib/systemd/systemd root20008:45 ? 00:00:00[kthreadd]新增关键字段UID运行进程的用户 IDPPID父进程 PID杀不死进程、僵尸进程排查核心CCPU 瞬时占用率STIME进程启动时间2. 精准筛选进程按用户筛选进程重点排查某个用户后台跑的脚本、占用资源[lizihancentos7 ~15:09:39]$ps-ulizihan u按终端筛选进程重点多 SSH 登录时只看当前窗口任务[lizihancentos7 ~15:12:36]$ps-tpts/0 ups axuBSD 风格完整资源信息重点自带 % CPU、% MEM排查服务器高负载第一命令[lizihancentos7 ~11:41:09]$psaxups -C 按进程名查询重点无需 grep 过滤直接匹配程序名[lizihancentos7 ~14:41:11]$ps-CsleepPID TTY TIME CMD9168? 00:00:00sleep# 自定义展示字段只看PID、状态、命令[lizihancentos7 ~14:41:58]$ps-Csleep-opid,stat,command PID STAT COMMAND9177Ssleep603. 树形展示父子进程 ps jf /ps axf核心重点直观打印进程树一眼看清父进程、子进程依赖解决 “kill 后进程自动重启” 的关键工具[lizihancentos7 ~15:14:14]$psjfPPIDPID PGID SID TTY TPGID STATUIDTIME COMMAND9951995699569956pts/19956Ss10000:00-bash9903990799079907pts/010045Ss10000:00-bash990710037100379907pts/010045S10000:00\_sleep12324. 自定义字段 进程排序重点--sort -%cpu负号代表降序服务器 CPU 打满时快速定位异常进程# 指定只查看PID、CPU、内存、执行命令[lizihancentos7 ~11:41:09]$ps-opid,%cpu,%mem,command1159# 按CPU使用率降序排查高负载进程[lizihancentos7 ~11:41:09]$psaxu--sort-%cpu三、Shell 作业控制前台 / 后台进程管理本节核心重点前台进程独占终端接收CtrlC/CtrlZ后台进程不占用终端但交互程序无法后台运行核心快捷键 / 命令后台启动、CtrlZ暂停、bg %任务号后台运行、fg %任务号切前台jobs 只查看当前终端任务跨终端看不到远程长时间任务痛点关闭 SSH 终端会发送 SIGHUP 杀死进程两种解决方案nohup、screen面试考点passwd、vim 这类需要输入交互的程序放后台会自动暂停。前置测试脚本[rootcentos7 ~]# cat EOF /usr/local/bin/study#!/bin/bashwhiletruedoecho$(date): Im studying [$]study.logsleep1doneEOF[rootcentos7 ~]# chmod x /usr/local/bin/study完整实操分步讲解1. 直接后台运行程序重点命令末尾加 shell 返回任务号 PID终端可继续输入命令[lizihancentos7 ~11:41:09]$ study Linux[1]5754# jobs查看当前终端全部后台任务[lizihancentos7 ~11:42:02]$jobs[1] Running study Linux2. 前台进程暂停、转入后台运行流程讲解前台运行 → CtrlZ 暂停放入后台停止状态→ bg 唤醒后台运行# 前台运行占用终端[lizihancentos7 ~11:42:14]$ study Python# 按下 CtrlZ 暂停程序^Z[2] Stopped study Python[lizihancentos7 ~11:42:28]$jobs[1]- Running study Linux[2] Stopped study Python# bg %2把2号任务放到后台持续运行[lizihancentos7 ~11:42:34]$bg%2[2] study Python[lizihancentos7 ~11:43:02]$jobs[1]- Running study Linux[2] Running study Python# 新增后台任务[lizihancentos7 ~11:43:09]$ study MySQL[3]59503. fg 切回前台CtrlC 终止重点后台任务无法用 CtrlC 杀死必须切前台或用 kill 发信号[lizihancentos7 ~11:43:15]$fg%1 study Linux ^C[lizihancentos7 ~11:43:24]$fg%2 study Python ^C[lizihancentos7 ~11:43:31]$fg%3 study MySQL ^C[lizihancentos7 ~11:43:36]$jobs特殊场景交互命令无法后台运行原理后台进程无法读取终端输入需要键盘交互的程序passwd、vim放入后台会直接暂停[lizihancentos7 ~13:33:34]$passwd[1]7265Changing passwordforuser lizihan.[1] Stoppedpasswd生产痛点关闭 SSH 终端进程不销毁原理关闭 SSH 会发送 SIGHUP 信号终端内所有后台任务全部销毁适合补丁、备份、编译等耗时任务。方案 1nohup重点忽略 SIGHUP 挂断信号输出自动存入 nohup.out简单轻量临时任务首选[lizihancentos7 ~]$nohupstudy English方案 2screen推荐长期任务重点创建独立虚拟会话断开终端不影响任务支持重新连接会话多任务管理# 安装screenCentOS7[rootcentos7 ~]# curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo[rootcentos7 ~]# yum install -y screen# 创建会话[lizihancentos7 ~]$screen[lizihancentos7 ~]$sleep1234# 新开终端查看会话列表[lizihancentos7 ~]$screen-ls# 重新连接断开的会话[lizihancentos7 ~]$screen-r会话ID# 关闭会话[lizihancentos7 ~]$screen-X-S会话ID quit四、进程信号管理kill、pgrep、pkill 实战本节核心重点信号是发给进程的软中断用于暂停、唤醒、终止进程5 个高频信号必背2 SIGINTCtrlC 优雅终止前台9 SIGKILL强制杀死进程无法捕获 / 忽略万不得已再用15 SIGTERMkill 默认信号优雅关闭推荐优先使用18 SIGCONT唤醒暂停进程19 SIGSTOP暂停进程运行kill 两种用法kill %任务号操作当前终端 jobs、kill PID操作全局进程pgrep 批量匹配进程 PIDpkill 批量发信号支持按进程名、用户、终端、父进程批量杀批量清理卡死进程思路ps 过滤 PIDawk 提取配合 kill 批量强制销毁。1. 查看系统全部信号[lizihancentos7 ~14:11:26]$kill-l1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP6)SIGABRT7)SIGBUS8)SIGFPE9)SIGKILL10)SIGUSR111)SIGSEGV12)SIGUSR213)SIGPIPE14)SIGALRM15)SIGTERM16)SIGSTKFLT17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP2. kill 操作任务 / 进程 PID实操讲解# 后台启动两个测试任务[lizihancentos7 ~14:11:38]$ study Linux[2]7696[lizihancentos7 ~14:11:38]$ study Python[3]7723# 19号信号暂停任务[lizihancentos7 ~14:11:57]$kill-19%2[lizihancentos7 ~14:12:38]$jobs[2] 已停止 study Linux# 18号信号恢复运行[lizihancentos7 ~14:15:09]$kill-18%2# 默认15号SIGTERM优雅终止进程[lizihancentos7 ~14:15:17]$kill-SIGTERM%2[lizihancentos7 ~14:15:42]$jobs[2]- 已终止 study Linux# 直接kill等价kill -15[lizihancentos7 ~14:15:45]$kill%3[lizihancentos7 ~14:16:15]$jobs[3] 已终止 study Python# 通过PID杀死全局进程[lizihancentos7 ~14:16:18]$ study MySQL[1]8803[lizihancentos7 ~14:16:34]$psaxu|grepstudy lizihan88030.00.01132881440pts/0 S14:160:00 /bin/bash /usr/local/bin/study MySQL[lizihancentos7 ~14:16:53]$kill8803[lizihancentos7 ~14:17:12]$jobs[1] 已终止 study MySQL3. pgrep pkill 批量管理进程核心区分pgrep 只查询 PID不杀进程pkill 直接批量发送信号无需手动提取 PID。示例 1按进程名批量杀死 sleep[lizihancentos7 ~15:07:43]$sleep1231sleep1232sleep1233[1]9459[2]9460[3]9461# pgrep只输出PID[lizihancentos7 ~15:07:54]$ pgrepsleep945994609461# pgrep -l同时输出PID进程名[lizihancentos7 ~15:08:08]$ pgrep-lsleep9459sleep9460sleep9461sleep# pkill 批量终止所有sleep进程[lizihancentos7 ~15:08:28]$pkillsleep示例 2按终端、父进程批量杀进程-t 终端杀死当前窗口所有后台任务-P PPID杀死某个父进程下全部子进程批量清理子进程树# 根据终端匹配进程[lizihancentos7 ~15:12:07]$sleep1231sleep1232[1]10014[2]10015[lizihancentos7 ~15:12:36]$tty/dev/pts/0[lizihancentos7 ~15:12:39]$ pgrep-tpts/0-l9907bash10014sleep10015sleep[lizihancentos7 ~15:12:56]$pkill-tpts/0[1]- 已终止sleep1231[2] 已终止sleep1232# 根据父进程PID杀死所有子进程[lizihancentos7 ~15:14:10]$sleep1231sleep1232[3]10043[4]10044[lizihancentos7 ~15:14:23]$pkill-P9907[2]已终止sleep1232[3]- 已终止sleep1231[4] 已终止sleep1232# root杀死指定用户全部进程强制注销用户[rootcentos7 ~15:11:15]# pkill -u lizihan示例 3批量清理 yum 卡死进程重点yum 多次 CtrlZ 暂停会占用 yum 锁无法新安装需要批量强制销毁grep -v grep过滤掉自身 grep 进程awk 提取第二列 PID[rootcentos7 ~15:15:10]# yum install httpd# 连续三次CtrlZ暂停yum^Z[1] Stopped yuminstallhttpd[rootcentos7 ~15:15:20]# yum install httpd^Z[2] Stopped yuminstallhttpd[rootcentos7 ~15:15:40]# yum install httpd^Z[3] Stopped yuminstallhttpd# 过滤所有yum进程PID[rootcentos7 ~15:16:08]# ps axu | grep yum |grep -v grep | awk {print $2}101031011810127# 强制批量杀死yum进程[rootcentos7 ~15:16:41]# pkill -9 yum[2]- Killed yuminstallhttpd[1]- Killed yuminstallhttpd[3] Killed yuminstallhttpd五、登录用户查询whoami /who/w /last本节核心重点whoami最简单查看当前执行命令的用户who查看所有在线登录用户、登录终端、登录 IPwwho 增强版附带系统负载、用户空闲时间、正在执行的命令运维排查服务器负载首选last查看历史登录记录排查异常登录、暴力破解溯源。实操# 当前登录用户[lizihancentos7 ~15:18:32]$whoamilizihan# 查看所有在线用户[lizihancentos7 ~15:19:02]$wholizihan pts/02026-07-2115:11(10.1.8.1)lizihan pts/12026-07-2115:11(10.1.8.1)# 在线用户系统负载、空闲时间、执行命令[lizihancentos7 ~15:19:05]$ w15:19:12 up6:38,3users, load average:0.00,0.01,0.05USERTTY FROM LOGIN IDLE JCPU PCPU WHAT lizihan pts/010.1.8.115:110.00s0.03s0.00s w lizihan pts/110.1.8.115:117:350.01s0.01s-bash# 系统历史登录记录排查登录行为[lizihancentos7 ~15:19:12]$ last lizihan pts/110.1.8.1 Tue Jul2115:11 still loggedinlizihan pts/010.1.8.1 Tue Jul2115:11 still loggedinlizihan pts/010.1.8.1 Tue Jul2111:41 -15:11(03:30)六、实战排错杀不掉、自动重启的进程本节核心重点故障现象kill 子进程后立刻重新生成根源存在父进程持续拉起子进程标准排查流程① ps axf/ps jf 查看 PPID 父进程 ID② 同时 kill 父进程 子进程彻底清除③ 兜底方案删除程序二进制文件阻止重新拉起延伸如果父进程是 systemd (PID1)属于系统托管服务不能直接 kill要用 systemctl stop 停止。模拟测试脚本守护循环拉起高占用进程[laomacentos7 ~]$mkdirbin[laomacentos7 ~]$catbin/mmEOF #!/bin/bash while true do md5sum /dev/zero sleep 1 done EOF[laomacentos7 ~]$chmodx bin/mm[laomacentos7 ~]$nohupmm完整处理命令与思路# 按CPU降序找到高占用子进程PIDpsaxo pid,%cpu,command--sort-%cpu|head-n5# 查看父子进程关系获取PPID父进程psax-f|grep-emd5sum-ePPID# 同时杀掉父进程、子进程避免重新拉起kill父PID 子PID七、全文总结ps 进程查看ps -ef查完整信息、ps axu查资源占用、ps axf查进程树支持按用户 / 终端 / 进程名筛选--sort 排序排查高负载Shell 作业管理后台、CtrlZ暂停、bg/fg切换远程长时间任务用 nohup 或 screen 保活交互程序无法后台运行进程信号优先使用kill(15 优雅关闭)卡死进程再用kill -919 暂停、18 恢复pgrep/pkill 批量操作支持按用户 / 终端 / 父进程批量杀用户登录排查whoami/who/w/last 分层查看当前、在线、历史登录记录顽固进程排错进程反复复活一定要追查 PPID 父进程父子进程一同销毁才能彻底解决。
Linux进程管理全解:进程查看、后台任务、信号控制实战教程
前言Linux 系统中所有程序运行都依托进程服务器运维、程序调试、服务器故障排查都离不开进程管理。很多新手只会简单使用ps、kill一旦遇到远程后台任务中断、进程杀不掉、占用 CPU 等高负载场景就束手无策。本文附上带真实操作时间的命令兼顾理论 实操适合运维入门、面试复习。一、基础概念分清程序、软件、进程、线程本节核心重点静态 vs 动态程序是磁盘静态文件进程是运行中的动态实例核心区分点fork 创建机制Linux 所有进程都是父进程 fork 生成bash 是绝大多数用户命令的父进程操作系统四大职能进程调度任务管理是运维核心其余三块作为底层基础进程自带独立资源空间线程共享进程资源多线程更轻量化。概念详解程序磁盘上静态、未运行的可执行文件不占用 CPU、内存资源。软件完整套装包含程序、配置文件、帮助手册、依赖包如 httpd、nginx。进程程序加载运行后的实例会占用 CPU、内存、磁盘 IO、网络端口是操作系统资源调度最小单位。线程进程内部轻量执行单元同一进程内线程共享内存空间。进程组成必记字段独立内存地址空间、运行权限凭据、多条执行线程、运行状态。进程运行环境局部 / 全局变量、CPU 调度上下文、打开的文件、占用端口。fork 机制终端执行任意命令当前 bash 父进程调用 fork 生成子进程示例[lizihancentos7 ~11:41:09]$sleep5sleep 是 bash 的子进程。操作系统四大核心职责任务管理进程 / 线程调度本文核心设备管理网卡、硬盘、显示器硬件驱动文件系统文件存储、权限、目录管理内存管理内存分配、回收、Swap 交换分区二、进程查看ps 命令全场景实操本节核心重点ps 三种参数风格UNIX (-)、GNU (--)、BSD (无横杠)日常混用无冲突高频命令区分ps -ef看完整信息、ps axu看资源占用、ps axf看父子进程树关键字段释义面试必考PID 进程 ID、PPID 父进程 ID、% CPU/% MEM 资源占用、TTY 终端筛选用法按用户、终端、进程名过滤支持自定义输出字段、按 CPU / 内存排序排查高负载。1. 基础查看命令讲解ps -e查看系统全部进程重点仅展示基础字段适合快速确认进程是否存在[lizihancentos7 ~11:41:09]$ps-ePID TTY TIME CMD1? 00:00:02 systemd2? 00:00:00 kthreadd字段释义PID进程唯一 IDTTY绑定终端?代表无终端后台守护进程TIME进程累计占用 CPU 时长不是程序运行时间高频易错点CMD执行命令名称ps -ef运维最常用完整进程信息重点新增 UID、PPID、STIME排查父子进程、进程启动时间首选[lizihancentos7 ~11:41:09]$ps-ef|head-n5UIDPIDPPIDC STIME TTY TIME CMD root10008:45 ? 00:00:02 /usr/lib/systemd/systemd root20008:45 ? 00:00:00[kthreadd]新增关键字段UID运行进程的用户 IDPPID父进程 PID杀不死进程、僵尸进程排查核心CCPU 瞬时占用率STIME进程启动时间2. 精准筛选进程按用户筛选进程重点排查某个用户后台跑的脚本、占用资源[lizihancentos7 ~15:09:39]$ps-ulizihan u按终端筛选进程重点多 SSH 登录时只看当前窗口任务[lizihancentos7 ~15:12:36]$ps-tpts/0 ups axuBSD 风格完整资源信息重点自带 % CPU、% MEM排查服务器高负载第一命令[lizihancentos7 ~11:41:09]$psaxups -C 按进程名查询重点无需 grep 过滤直接匹配程序名[lizihancentos7 ~14:41:11]$ps-CsleepPID TTY TIME CMD9168? 00:00:00sleep# 自定义展示字段只看PID、状态、命令[lizihancentos7 ~14:41:58]$ps-Csleep-opid,stat,command PID STAT COMMAND9177Ssleep603. 树形展示父子进程 ps jf /ps axf核心重点直观打印进程树一眼看清父进程、子进程依赖解决 “kill 后进程自动重启” 的关键工具[lizihancentos7 ~15:14:14]$psjfPPIDPID PGID SID TTY TPGID STATUIDTIME COMMAND9951995699569956pts/19956Ss10000:00-bash9903990799079907pts/010045Ss10000:00-bash990710037100379907pts/010045S10000:00\_sleep12324. 自定义字段 进程排序重点--sort -%cpu负号代表降序服务器 CPU 打满时快速定位异常进程# 指定只查看PID、CPU、内存、执行命令[lizihancentos7 ~11:41:09]$ps-opid,%cpu,%mem,command1159# 按CPU使用率降序排查高负载进程[lizihancentos7 ~11:41:09]$psaxu--sort-%cpu三、Shell 作业控制前台 / 后台进程管理本节核心重点前台进程独占终端接收CtrlC/CtrlZ后台进程不占用终端但交互程序无法后台运行核心快捷键 / 命令后台启动、CtrlZ暂停、bg %任务号后台运行、fg %任务号切前台jobs 只查看当前终端任务跨终端看不到远程长时间任务痛点关闭 SSH 终端会发送 SIGHUP 杀死进程两种解决方案nohup、screen面试考点passwd、vim 这类需要输入交互的程序放后台会自动暂停。前置测试脚本[rootcentos7 ~]# cat EOF /usr/local/bin/study#!/bin/bashwhiletruedoecho$(date): Im studying [$]study.logsleep1doneEOF[rootcentos7 ~]# chmod x /usr/local/bin/study完整实操分步讲解1. 直接后台运行程序重点命令末尾加 shell 返回任务号 PID终端可继续输入命令[lizihancentos7 ~11:41:09]$ study Linux[1]5754# jobs查看当前终端全部后台任务[lizihancentos7 ~11:42:02]$jobs[1] Running study Linux2. 前台进程暂停、转入后台运行流程讲解前台运行 → CtrlZ 暂停放入后台停止状态→ bg 唤醒后台运行# 前台运行占用终端[lizihancentos7 ~11:42:14]$ study Python# 按下 CtrlZ 暂停程序^Z[2] Stopped study Python[lizihancentos7 ~11:42:28]$jobs[1]- Running study Linux[2] Stopped study Python# bg %2把2号任务放到后台持续运行[lizihancentos7 ~11:42:34]$bg%2[2] study Python[lizihancentos7 ~11:43:02]$jobs[1]- Running study Linux[2] Running study Python# 新增后台任务[lizihancentos7 ~11:43:09]$ study MySQL[3]59503. fg 切回前台CtrlC 终止重点后台任务无法用 CtrlC 杀死必须切前台或用 kill 发信号[lizihancentos7 ~11:43:15]$fg%1 study Linux ^C[lizihancentos7 ~11:43:24]$fg%2 study Python ^C[lizihancentos7 ~11:43:31]$fg%3 study MySQL ^C[lizihancentos7 ~11:43:36]$jobs特殊场景交互命令无法后台运行原理后台进程无法读取终端输入需要键盘交互的程序passwd、vim放入后台会直接暂停[lizihancentos7 ~13:33:34]$passwd[1]7265Changing passwordforuser lizihan.[1] Stoppedpasswd生产痛点关闭 SSH 终端进程不销毁原理关闭 SSH 会发送 SIGHUP 信号终端内所有后台任务全部销毁适合补丁、备份、编译等耗时任务。方案 1nohup重点忽略 SIGHUP 挂断信号输出自动存入 nohup.out简单轻量临时任务首选[lizihancentos7 ~]$nohupstudy English方案 2screen推荐长期任务重点创建独立虚拟会话断开终端不影响任务支持重新连接会话多任务管理# 安装screenCentOS7[rootcentos7 ~]# curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo[rootcentos7 ~]# yum install -y screen# 创建会话[lizihancentos7 ~]$screen[lizihancentos7 ~]$sleep1234# 新开终端查看会话列表[lizihancentos7 ~]$screen-ls# 重新连接断开的会话[lizihancentos7 ~]$screen-r会话ID# 关闭会话[lizihancentos7 ~]$screen-X-S会话ID quit四、进程信号管理kill、pgrep、pkill 实战本节核心重点信号是发给进程的软中断用于暂停、唤醒、终止进程5 个高频信号必背2 SIGINTCtrlC 优雅终止前台9 SIGKILL强制杀死进程无法捕获 / 忽略万不得已再用15 SIGTERMkill 默认信号优雅关闭推荐优先使用18 SIGCONT唤醒暂停进程19 SIGSTOP暂停进程运行kill 两种用法kill %任务号操作当前终端 jobs、kill PID操作全局进程pgrep 批量匹配进程 PIDpkill 批量发信号支持按进程名、用户、终端、父进程批量杀批量清理卡死进程思路ps 过滤 PIDawk 提取配合 kill 批量强制销毁。1. 查看系统全部信号[lizihancentos7 ~14:11:26]$kill-l1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP6)SIGABRT7)SIGBUS8)SIGFPE9)SIGKILL10)SIGUSR111)SIGSEGV12)SIGUSR213)SIGPIPE14)SIGALRM15)SIGTERM16)SIGSTKFLT17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP2. kill 操作任务 / 进程 PID实操讲解# 后台启动两个测试任务[lizihancentos7 ~14:11:38]$ study Linux[2]7696[lizihancentos7 ~14:11:38]$ study Python[3]7723# 19号信号暂停任务[lizihancentos7 ~14:11:57]$kill-19%2[lizihancentos7 ~14:12:38]$jobs[2] 已停止 study Linux# 18号信号恢复运行[lizihancentos7 ~14:15:09]$kill-18%2# 默认15号SIGTERM优雅终止进程[lizihancentos7 ~14:15:17]$kill-SIGTERM%2[lizihancentos7 ~14:15:42]$jobs[2]- 已终止 study Linux# 直接kill等价kill -15[lizihancentos7 ~14:15:45]$kill%3[lizihancentos7 ~14:16:15]$jobs[3] 已终止 study Python# 通过PID杀死全局进程[lizihancentos7 ~14:16:18]$ study MySQL[1]8803[lizihancentos7 ~14:16:34]$psaxu|grepstudy lizihan88030.00.01132881440pts/0 S14:160:00 /bin/bash /usr/local/bin/study MySQL[lizihancentos7 ~14:16:53]$kill8803[lizihancentos7 ~14:17:12]$jobs[1] 已终止 study MySQL3. pgrep pkill 批量管理进程核心区分pgrep 只查询 PID不杀进程pkill 直接批量发送信号无需手动提取 PID。示例 1按进程名批量杀死 sleep[lizihancentos7 ~15:07:43]$sleep1231sleep1232sleep1233[1]9459[2]9460[3]9461# pgrep只输出PID[lizihancentos7 ~15:07:54]$ pgrepsleep945994609461# pgrep -l同时输出PID进程名[lizihancentos7 ~15:08:08]$ pgrep-lsleep9459sleep9460sleep9461sleep# pkill 批量终止所有sleep进程[lizihancentos7 ~15:08:28]$pkillsleep示例 2按终端、父进程批量杀进程-t 终端杀死当前窗口所有后台任务-P PPID杀死某个父进程下全部子进程批量清理子进程树# 根据终端匹配进程[lizihancentos7 ~15:12:07]$sleep1231sleep1232[1]10014[2]10015[lizihancentos7 ~15:12:36]$tty/dev/pts/0[lizihancentos7 ~15:12:39]$ pgrep-tpts/0-l9907bash10014sleep10015sleep[lizihancentos7 ~15:12:56]$pkill-tpts/0[1]- 已终止sleep1231[2] 已终止sleep1232# 根据父进程PID杀死所有子进程[lizihancentos7 ~15:14:10]$sleep1231sleep1232[3]10043[4]10044[lizihancentos7 ~15:14:23]$pkill-P9907[2]已终止sleep1232[3]- 已终止sleep1231[4] 已终止sleep1232# root杀死指定用户全部进程强制注销用户[rootcentos7 ~15:11:15]# pkill -u lizihan示例 3批量清理 yum 卡死进程重点yum 多次 CtrlZ 暂停会占用 yum 锁无法新安装需要批量强制销毁grep -v grep过滤掉自身 grep 进程awk 提取第二列 PID[rootcentos7 ~15:15:10]# yum install httpd# 连续三次CtrlZ暂停yum^Z[1] Stopped yuminstallhttpd[rootcentos7 ~15:15:20]# yum install httpd^Z[2] Stopped yuminstallhttpd[rootcentos7 ~15:15:40]# yum install httpd^Z[3] Stopped yuminstallhttpd# 过滤所有yum进程PID[rootcentos7 ~15:16:08]# ps axu | grep yum |grep -v grep | awk {print $2}101031011810127# 强制批量杀死yum进程[rootcentos7 ~15:16:41]# pkill -9 yum[2]- Killed yuminstallhttpd[1]- Killed yuminstallhttpd[3] Killed yuminstallhttpd五、登录用户查询whoami /who/w /last本节核心重点whoami最简单查看当前执行命令的用户who查看所有在线登录用户、登录终端、登录 IPwwho 增强版附带系统负载、用户空闲时间、正在执行的命令运维排查服务器负载首选last查看历史登录记录排查异常登录、暴力破解溯源。实操# 当前登录用户[lizihancentos7 ~15:18:32]$whoamilizihan# 查看所有在线用户[lizihancentos7 ~15:19:02]$wholizihan pts/02026-07-2115:11(10.1.8.1)lizihan pts/12026-07-2115:11(10.1.8.1)# 在线用户系统负载、空闲时间、执行命令[lizihancentos7 ~15:19:05]$ w15:19:12 up6:38,3users, load average:0.00,0.01,0.05USERTTY FROM LOGIN IDLE JCPU PCPU WHAT lizihan pts/010.1.8.115:110.00s0.03s0.00s w lizihan pts/110.1.8.115:117:350.01s0.01s-bash# 系统历史登录记录排查登录行为[lizihancentos7 ~15:19:12]$ last lizihan pts/110.1.8.1 Tue Jul2115:11 still loggedinlizihan pts/010.1.8.1 Tue Jul2115:11 still loggedinlizihan pts/010.1.8.1 Tue Jul2111:41 -15:11(03:30)六、实战排错杀不掉、自动重启的进程本节核心重点故障现象kill 子进程后立刻重新生成根源存在父进程持续拉起子进程标准排查流程① ps axf/ps jf 查看 PPID 父进程 ID② 同时 kill 父进程 子进程彻底清除③ 兜底方案删除程序二进制文件阻止重新拉起延伸如果父进程是 systemd (PID1)属于系统托管服务不能直接 kill要用 systemctl stop 停止。模拟测试脚本守护循环拉起高占用进程[laomacentos7 ~]$mkdirbin[laomacentos7 ~]$catbin/mmEOF #!/bin/bash while true do md5sum /dev/zero sleep 1 done EOF[laomacentos7 ~]$chmodx bin/mm[laomacentos7 ~]$nohupmm完整处理命令与思路# 按CPU降序找到高占用子进程PIDpsaxo pid,%cpu,command--sort-%cpu|head-n5# 查看父子进程关系获取PPID父进程psax-f|grep-emd5sum-ePPID# 同时杀掉父进程、子进程避免重新拉起kill父PID 子PID七、全文总结ps 进程查看ps -ef查完整信息、ps axu查资源占用、ps axf查进程树支持按用户 / 终端 / 进程名筛选--sort 排序排查高负载Shell 作业管理后台、CtrlZ暂停、bg/fg切换远程长时间任务用 nohup 或 screen 保活交互程序无法后台运行进程信号优先使用kill(15 优雅关闭)卡死进程再用kill -919 暂停、18 恢复pgrep/pkill 批量操作支持按用户 / 终端 / 父进程批量杀用户登录排查whoami/who/w/last 分层查看当前、在线、历史登录记录顽固进程排错进程反复复活一定要追查 PPID 父进程父子进程一同销毁才能彻底解决。