Linux 进程命令排查大全(应急响应场景,按使用频率排序)
Linux 进程命令排查大全(应急响应场景,按使用频率排序)
以下是针对应急响应场景的 Linux 进程排查命令大全,专注于快速定位异常进程、恶意行为或系统瓶颈,按命令使用频率从高到低排序,优化并补充了实用技巧和注意事项,适用于安全事件响应、性能问题排查等场景。
1. ps
- 查看进程信息(最常用)
- 用途: 查看进程状态、资源占用、用户、命令行等,快速定位可疑或异常进程。
- 常用命令
ps aux
: 显示所有进程的详细信息(用户、PID、CPU/内存使用、命令等)。ps -ef
: 显示所有进程,包含父进程关系(PPID)。ps aux --sort=-%cpu | head -n 10
: 列出 CPU 使用率前 10 的进程。ps aux --sort=-%mem | head -n 10
: 列出内存使用率前 10 的进程。ps -p <PID> -o pid,ppid,comm,%cpu,%mem,rss,vsz
: 自定义输出(PID、父进程、命令、CPU/内存使用、驻留内存、虚拟内存)。ps -C <进程名>
: 按进程名查找进程。ps -u <用户名>
: 查看指定用户的所有进程。ps -eLf
: 显示进程的线程信息(排查多线程问题)。
- 技巧
- 使用
grep
过滤:ps aux | grep <关键字>
查找特定进程。 - 检查隐藏进程:
ps -ef | grep -v "root\|user"
过滤常见系统/用户进程。
- 使用
- 注意事项:
ps aux
输出可能较多,使用--sort
或head
缩小范围;-ef
更适合查看进程树。
2. top
/ htop
- 实时监控进程
- 用途: 实时查看进程的 CPU、内存占用,快速发现资源异常。
- 常用命令
top
: 显示实时进程信息(按q
退出,k
输入 PID 终止进程)。htop
: 交互式进程查看工具,支持鼠标操作(需安装:sudo apt install htop
)。top -u <用户名>
: 查看指定用户的进程。htop --sort-key PERCENT_CPU
: 按 CPU 使用率排序(htop 专用)。
- 技巧
- 在
top
中按f
进入字段管理,选择排序字段(如%CPU
或%MEM
)。 - 在
htop
中使用F3
搜索进程,F9
终止进程。
- 在
- 注意事项:
htop
需手动安装,功能更直观;top
是系统默认工具,适合快速检查。
3. kill
/ killall
/ pkill
- 终止进程
- 用途: 终止可疑或异常进程,快速止损。
- 常用命令
kill <PID>
: 发送 SIGTERM 信号,请求进程正常退出。kill -9 <PID>
: 发送 SIGKILL 信号,强制终止(慎用,可能导致数据丢失)。killall <进程名>
: 按进程名终止所有匹配进程。pkill <进程名>
: 按进程名终止(支持正则表达式)。pkill -f <关键字>
: 按命令行关键字终止进程。kill -STOP <PID>
: 暂停进程(排查时临时冻结)。kill -CONT <PID>
: 恢复暂停的进程。
- 技巧
- 结合
pidof <进程名>
获取 PID 后使用kill
。 - 使用
pkill -f
精确匹配命令行,避免误杀。
- 结合
- 注意事项: 优先使用 SIGTERM(
kill
默认),仅在必要时使用 SIGKILL(-9
)。
4. lsof
- 查看进程打开的文件和网络连接
- 用途: 排查进程打开的文件、端口或网络连接,识别恶意行为(如后门)。
- 常用命令
lsof -p <PID>
: 查看指定进程打开的文件和端口。lsof -i
: 查看所有网络相关文件(监听端口、连接等)。lsof -i :80
: 查看占用 80 端口的进程。lsof /path/to/file
: 查看访问指定文件的进程。lsof -iTCP -sTCP:ESTABLISHED
: 查看已建立的 TCP 连接。lsof -iUDP
: 查看 UDP 连接。
- 技巧
- 结合
grep
过滤:lsof -i | grep <进程名>
。 - 检查可疑端口:
lsof -i :1-65535
列出所有端口占用。
- 结合
- 注意事项: 需 root 权限查看其他用户进程的完整信息。
5. netstat
/ ss
- 查看网络连接与进程
- 用途: 排查进程的网络活动,定位异常连接或监听端口。
- 常用命令
netstat -tulnp
: 显示监听的端口及关联进程(需安装 net-tools)。ss -tulnp
: 更高效查看监听端口和进程。netstat -anp | grep <PID>
: 查看指定进程的网络连接。ss -p | grep <进程名>
: 查看进程的网络连接。
- 技巧
- 使用
ss
替代netstat
,速度更快,输出更简洁。 - 检查可疑连接:
ss -tunap | grep ESTAB
查看已建立连接。
- 使用
- 注意事项:
netstat
可能需安装(sudo apt install net-tools
);ss
是现代系统默认工具。
6. strace
- 跟踪系统调用
- 用途: 深入分析进程行为,排查异常、卡顿或恶意活动。
- 常用命令
strace -p <PID>
: 跟踪指定进程的系统调用。strace -o trace.log -p <PID>
: 将跟踪结果输出到文件。strace -c -p <PID>
: 统计系统调用次数和耗时。strace -e openat <命令>
: 仅跟踪文件打开相关系统调用。
- 技巧
- 排查文件访问:
strace -e open,access -p <PID>
。 - 限制输出:
strace -e trace=network -p <PID>
仅跟踪网络相关调用。
- 排查文件访问:
- 注意事项: 需 root 权限跟踪非自身进程;大量输出可能影响性能,建议输出到文件分析。
7. pmap
- 查看进程内存映射
- 用途: 分析进程内存使用,排查内存泄漏或异常分配。
- 常用命令
pmap <PID>
: 显示进程的内存映射。pmap -x <PID>
: 显示详细内存信息(RSS、脏页等)。pmap -d <PID>
: 显示设备映射信息。
- 技巧
- 检查异常内存:
pmap -x <PID> | sort -n -k 3
按内存占用排序。
- 检查异常内存:
- 注意事项: 高内存占用进程可能需要结合
top
或free
进一步分析。
8. pidof
- 查找进程 PID
- 用途: 快速获取进程名对应的 PID,便于后续操作。
- 常用命令
pidof <进程名>
: 返回指定进程的 PID。
- 技巧
- 结合
kill
:kill -9 $(pidof <进程名>)
快速终止进程。
- 结合
- 注意事项: 如果进程名有多个实例,返回所有 PID。
9. watch
- 周期性监控
- 用途: 定期执行命令,动态观察进程状态。
- 常用命令
watch -n 1 'ps aux --sort=-%cpu'
: 每秒刷新 CPU 使用率最高的进程。watch -n 2 'lsof -i'
: 每 2 秒查看网络连接。
- 技巧
- 结合复杂命令:
watch -n 1 'ps -p $(pidof <进程名>) -o %cpu,%mem'
.
- 结合复杂命令:
- 注意事项: 避免设置过短间隔(如 <0.1 秒),可能增加系统负载。
10. journalctl
- 查看系统日志
- 用途: 排查进程相关的系统日志,定位错误或异常。
- 常用命令
journalctl -u <服务名>
: 查看服务相关日志(服务可能以进程运行)。journalctl -f
: 实时监控系统日志。journalctl | grep <进程名>
: 过滤与进程相关的日志。
- 技巧
- 按时间筛选:
journalctl --since "2025-10-16 10:00"
.
- 按时间筛选:
- 注意事项: 需 root 权限查看完整日志。
11. ltrace
- 跟踪库函数调用
- 用途: 排查进程调用的库函数,分析恶意行为或性能问题。
- 常用命令
ltrace -p <PID>
: 跟踪进程的库函数调用。ltrace -o trace.log -p <PID>
: 输出到文件。ltrace -c -p <PID>
: 统计库函数调用次数。
- 技巧
- 排查网络行为:
ltrace -e socket,connect -p <PID>
.
- 排查网络行为:
- 注意事项: 需安装(
sudo apt install ltrace
);对动态链接库依赖较多。
12. gdb
- 调试运行中进程
- 用途: 附加到运行进程,分析崩溃或异常行为。
- 常用 commands
gdb --pid <PID>
: 附加到运行中的进程。gdb <可执行文件> <core文件>
: 分析进程崩溃的 core dump。
- 技巧
- 使用
bt
查看调用栈,info threads
查看线程状态。
- 使用
- 注意事项: 需安装(
sudo apt install gdb
);确保系统启用 core dump(ulimit -c unlimited
)。
13. 应急响应排查组合
- 快速定位高资源占用
top
或htop
实时监控。ps aux --sort=-%cpu | head -n 10
: 高 CPU 进程。ps aux --sort=-%mem | head -n 10
: 高内存进程。
- 查找可疑进程
ps -ef | grep -v "root\|user\|systemd"
过滤正常进程。lsof -i | grep LISTEN
检查异常监听端口。
- 分析进程行为
strace -p <PID> -o trace.log
跟踪系统调用。lsof -p <PID>
检查文件和网络活动。pmap -x <PID>
检查内存使用。
- 终止恶意进程
kill -9 $(pidof <进程名>)
或pkill -f <关键字>
。
14. 补充注意事项
- 权限: 排查其他用户进程或敏感操作需 root 权限(
sudo
)。 - 工具安装: 确保常用工具(如
htop
,lsof
,strace
,ltrace
)已安装。 - 日志备份: 在终止进程前,保存相关日志(
journalctl
,strace
输出等)。 - 谨慎操作: 使用
kill -9
或终止关键进程前,确认不会影响系统稳定性。
Windows 进程排查命令速查表(应急响应场景,按使用频率排序,含使用技巧)
以下是为 Windows 应急响应场景优化的进程排查命令速查表,专注于快速定位异常进程、恶意行为或系统性能问题。命令按使用频率分为高频(详细说明+技巧)和中频(精简说明+技巧),适用于快速排查。每个命令补充了实用技巧,提升排查效率。
高频命令(常用,详细说明+使用技巧)
tasklist
- 用途: 查看运行进程,快速定位高资源占用或可疑进程。
- 命令
tasklist
: 列出所有进程(进程名、PID、内存使用)。tasklist /v
: 显示详细信息(用户、CPU 时间、窗口标题)。tasklist /fi "IMAGENAME eq <进程名>"
: 按进程名过滤(如tasklist /fi "IMAGENAME eq notepad.exe"
)。
- 使用技巧
- 过滤可疑进程: 用
| findstr /i <关键字>
忽略大小写搜索,如tasklist /v | findstr /i "http"
. - 快速定位 PID: 结合
taskkill
,如tasklist | findstr notepad && taskkill /IM notepad.exe /F
. - 导出分析: 输出到文件
tasklist /v > processes.txt
,用文本编辑器分析。 - 服务关联: 用
tasklist /svc | findstr <服务名>
排查服务相关进程。
- 过滤可疑进程: 用
- 注意: CMD 或 PowerShell 均可运行,输出多时用
more
或重定向。 - 场景: 查找占用资源过高的进程或可疑进程名。
Get-Process
(PowerShell)- 用途: 查看进程详细信息,支持灵活过滤和排序,适合自动化排查。
- 命令
Get-Process
: 列出所有进程(PID、CPU、内存等)。Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
: 按 CPU 使用率排序前 10。Get-Process -Name <进程名>
: 按进程名查找(如Get-Process -Name notepad
)。Get-Process | Select-Object Name,Id,CPU,WorkingSet,Path
: 显示进程名、PID、CPU、内存、路径。
- 使用技巧
- 动态筛选: 用
| Where-Object { $_.WorkingSet -gt 100MB }
筛选内存占用超 100MB 的进程。 - 批量操作: 结合
Stop-Process
,如Get-Process -Name notepad | Stop-Process -Force
. - 路径检查: 用
| Select-Object Path | Sort-Object -Unique
检查进程路径是否异常。 - 定时监控: 用
while($true) { Get-Process | Sort-Object CPU -Descending | Select-Object -First 5; Start-Sleep -Seconds 5 }
每 5 秒监控高 CPU 进程。
- 动态筛选: 用
- 注意: PowerShell 提供强大脚本化能力,需管理员权限查看完整信息。
- 场景: 分析高 CPU/内存占用,检查进程路径是否异常。
Task Manager
- 用途: 图形化实时监控,快速发现 CPU/内存/网络异常。
- 命令: 按
Ctrl + Shift + Esc
或右键任务栏打开。 - 功能
- “进程”标签:显示 CPU、内存、磁盘、网络使用。
- “详细信息”标签:显示 PID、用户、路径等。
- 右键进程可“结束任务”或“打开文件位置”。
- 使用技巧
- 快速排序: 在“详细信息”标签点击列头(如 CPU、内存)排序,快速定位异常进程。
- 路径验证: 右键进程 > “打开文件位置”,检查可执行文件是否在可疑目录(如 %Temp%)。
- 服务关联: 在“详细信息”右键选择“转到服务”,排查进程是否为服务。
- 显示更多: 在“查看”菜单启用所有列(如命令行、会话 ID)。
- 注意: 需管理员权限查看其他用户进程,适合快速直观排查。
- 场景: 实时监控资源占用,终止卡死进程。
netstat
- 用途: 检查网络连接,定位可疑网络活动或端口占用。
- 命令
netstat -ano
: 显示所有连接(PID、端口、状态)。netstat -ano | findstr <端口>
: 查找占用端口的进程(如netstat -ano | findstr 80
)。netstat -b
: 显示每个连接的执行文件(需管理员权限)。
- 使用技巧
- 快速定位 PID: 用
netstat -ano | findstr LISTENING
查看监听端口。 - 结合 tasklist: 如
netstat -ano | findstr 80 && tasklist /fi "PID eq <PID>"
查找端口占用进程。 - 循环监控: 用
for /l %i in (1,1,100) do netstat -ano | findstr <端口> & timeout 5
每 5 秒检查端口。 - 导出分析: 用
netstat -ano > netstat.txt
保存连接信息。
- 快速定位 PID: 用
- 注意: CMD 运行,需管理员权限查看完整信息。
- 场景: 排查恶意进程的网络行为,检查监听端口。
Get-NetTCPConnection
(PowerShell)- 用途: 查看 TCP 连接及关联进程,现代替代
netstat
。 - 命令
Get-NetTCPConnection
: 列出所有 TCP 连接(PID、端口、状态)。Get-NetTCPConnection -LocalPort 80
: 查找占用 80 端口的进程。Get-NetTCPConnection | Select-Object LocalAddress,LocalPort,OwningProcess
: 显示地址、端口、PID。
- 使用技巧
- 关联进程: 用
Get-NetTCPConnection | ForEach-Object { Get-Process -Id $_.OwningProcess | Select-Object Name,Id,Path }
查看连接的进程详情。 - 状态过滤: 用
Get-NetTCPConnection -State Established
筛选活跃连接。 - 持续监控: 用
while($true) { Get-NetTCPConnection -State Listen; Start-Sleep -Seconds 5 }
每 5 秒检查监听端口。 - 导出 CSV: 用
Get-NetTCPConnection | Export-Csv connections.csv
便于分析。
- 关联进程: 用
- 注意: 需 PowerShell 5.1+,管理员权限查看更多信息。
- 场景: 排查异常网络连接,定位恶意进程。
- 用途: 查看 TCP 连接及关联进程,现代替代
中频命令(次常用,精简说明+使用技巧)
taskkill
- 用途: 终止异常或恶意进程。
- 命令
taskkill /PID <PID> /F
: 强制终止指定 PID。taskkill /IM <进程名> /F
: 按进程名终止(如taskkill /IM notepad.exe /F
)。
- 使用技巧
- 结合
tasklist
快速终止:tasklist | findstr notepad && taskkill /IM notepad.exe /F
. - 批量终止:用
taskkill /IM <进程名> /F /T
终止进程及其子进程。
- 结合
- 注意:
/F
强制终止可能导致数据丢失,谨慎使用。
Stop-Process
(PowerShell)- 用途: 终止进程,PowerShell 替代
taskkill
。 - 命令
Stop-Process -Id <PID> -Force
: 强制终止 PID。Stop-Process -Name <进程名>
: 按进程名终止。
- 使用技巧
- 结合
Get-Process
:Get-Process -Name notepad | Stop-Process -Force
. - 条件终止:
Get-Process | Where-Object { $_.CPU -gt 1000 } | Stop-Process -Force
.
- 结合
- 注意: 需管理员权限终止系统进程。
- 用途: 终止进程,PowerShell 替代
wmic process
- 用途: 查看详细进程信息(路径、命令行等)。
- 命令
wmic process list full
: 显示所有进程详情。wmic process where name="<进程名>" get name,processid,executablepath
: 按进程名查询。
- 使用技巧
- 检查命令行:
wmic process where processid=<PID> get commandline
排查恶意参数。 - 导出数据:
wmic process list full /format:csv > processes.csv
.
- 检查命令行:
- 注意: 需管理员权限,Windows 11 中可能弃用。
Get-CimInstance Win32_Process
(PowerShell)- 用途: 替代
wmic
,查询进程路径、命令行等。 - 命令
Get-CimInstance Win32_Process | Select-Object Name,ProcessId,CommandLine
: 列出进程详情。
- 使用技巧
- 筛选可疑进程:
Get-CimInstance Win32_Process | Where-Object { $_.Path -like "*Temp*" }
. - 检查父进程:
Get-CimInstance Win32_Process | Select-Object Name,ProcessId,ParentProcessId
.
- 筛选可疑进程:
- 注意: 适合脚本化,需管理员权限。
- 用途: 替代
Get-WinEvent
(PowerShell)- 用途: 查看事件日志,排查进程相关错误。
- 命令
Get-WinEvent -LogName System -MaxEvents 100
: 查看最近 100 条系统日志。Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4688 }
: 查看进程创建事件。
- 使用技巧
- 快速过滤:
Get-WinEvent -LogName System | Where-Object { $_.Message -match "<进程名>" }
. - 时间范围:
Get-WinEvent -LogName System -FilterHashtable @{StartTime=(Get-Date).AddMinutes(-30)}
.
- 快速过滤:
- 注意: 需启用审核策略,管理员权限。
应急响应排查场景
- 高 CPU/内存进程:
- Task Manager: 按 CPU/内存排序。
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
: 列出高 CPU 进程。
- 可疑进程:
tasklist /v | findstr <关键字>
: 查找可疑进程。Get-CimInstance Win32_Process | Where-Object { $_.CommandLine -match "<关键字>" }
: 检查命令行。
- 网络活动:
netstat -ano | findstr <端口>
: 查找端口占用。Get-NetTCPConnection -State Listen
: 查看监听端口。
补充说明
- 权限: 高频命令多需管理员权限,运行 CMD/PowerShell 时选择“以管理员身份运行”。
- 输出管理: 重定向输出(如
tasklist > processes.txt
)或用 PowerShell 的Export-Csv
。 - 安全: 检查进程路径(
Get-CimInstance
或 Task Manager)是否异常,验证数字签名(右键文件 > 属性 > 数字签名)。 - 工具: Task Manager 内置,PowerShell 适合脚本化,CMD 适合快速操作。