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 输出可能较多,使用 --sorthead 缩小范围;-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 按内存占用排序。
  • 注意事项: 高内存占用进程可能需要结合 topfree 进一步分析。

8. pidof - 查找进程 PID

  • 用途: 快速获取进程名对应的 PID,便于后续操作。
  • 常用命令
    • pidof <进程名>: 返回指定进程的 PID。
  • 技巧
    • 结合 killkill -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. 应急响应排查组合

  • 快速定位高资源占用
    • tophtop 实时监控。
    • 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 保存连接信息。
    • 注意: 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+,管理员权限查看更多信息。
    • 场景: 排查异常网络连接,定位恶意进程。

中频命令(次常用,精简说明+使用技巧)

  • 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-ProcessGet-Process -Name notepad | Stop-Process -Force.
      • 条件终止:Get-Process | Where-Object { $_.CPU -gt 1000 } | Stop-Process -Force.
    • 注意: 需管理员权限终止系统进程。
  • 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 适合快速操作。
posted @ 2025-10-16 11:11  0xMouise  阅读(14)  评论(0)    收藏  举报