linux运维一天一个shell命令之ps详解
创始人
2024-09-25 21:50:22
0

1.定义

ps 是 Unix/Linux 系统中的一个非常常用的命令,用于显示有关当前运行的进程的信息。它可以提供详细的进程列表及其状态、资源使用等信息

2.用法

基本用法

ps [options]

常用选项

以下是一些常用的 ps 命令选项以及它们的描述:

  • ps:查看当前用户在当前终端下运行的进程。
ps 
  • ps -e 或 ps -A:显示系统中所有进程。
ps -e 
  • ps -f:以完整格式显示进程信息,包括 PPID 等详细信息。
ps -f 
  • ps -l:以长格式显示进程信息。
ps -l 
  • ps -u username:显示指定用户的所有进程。
ps -u root 
  • ps -ef:显示系统中所有进程的完整格式信息。
ps -ef 
  • ps aux:显示所有用户的所有进程,使用 BSD 样式的输出格式。
ps aux 
  • ps aux --sort=-%mem:按内存使用量排序显示进程信息。
ps aux --sort=-%mem 
  • ps aux --sort=-%cpu:按 CPU 使用量排序显示进程信息。
ps aux --sort=-%cpu 
  • ps -C process_name:显示指定进程名称的进程信息。
ps -C sshd 

选项组合

命令选项可以组合使用,以显示更详细或特定的进程信息:

  • ps -ef | grep process_name:使用 grep 过滤特定进程。
ps -ef | grep nginx 
  • ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem:以自定义格式显示进程信息,并按内存使用量排序。
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem 
  • 使用 awk 提取特定字段
ps -eo pid,ppid,cmd,%mem,%cpu | awk '\$3 ~ /nginx/' 
  • 使用 watch 实时监控特定进程
watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 10' 

输出字段解释

  • ps aux 输出字段
USER:进程所属的用户。  PID:进程 ID。  %CPU:进程使用的 CPU 百分比。  %MEM:进程使用的内存百分比。  VSZ:虚拟内存使用量(以 KB 为单位)。   RSS:常驻内存集大小(以 KB 为单位)。  TTY:进程的控制终端(如果没有控制终端,则显示 ?)。  STAT:进程状态码,可能的状态码包括:      R:运行      S:睡眠      D:不可中断睡眠(通常是 I/O)      Z:僵尸进程      T:停止(由作业控制信号)      W:进入内存交换(从内核 2.6 开始,已经废弃)      X:死进程(从内核 2.6 开始,已经废弃)      额外的状态码包括:         <:高优先级进程         N:低优先级进程         L:有内存锁定页         s:是会话领导         l:多线程         +:在前台的进程组          START:进程启动时间。  TIME:进程累计的 CPU 时间。  COMMAND:启动进程的命令及其参数。 
  • ps -ef 输出字段
UID:进程所属用户的用户 ID。  PID:进程 ID。  PPID:父进程 ID。  C:CPU 使用率(同一系统上的相对值)。  STIME:进程启动时间。  TTY:终端类型。  TIME:进程累计的 CPU 时间。  CMD:启动进程的命令及其参数。 
  • 其他常见字段
PRI:进程的优先级。  NI:进程的 nice 值(影响进程的优先级)。  WCHAN:进程正在等待的内核函数。  SZ:进程使用的交换页面数。  RSS:常驻内存集大小(以 KB 为单位)。  ADDR:内存地址。  FLAGS:任务标志。 

3.如何用ps排错

步骤

  1. 确定系统运行的进程
    首先,了解系统上所有正在运行的进程。使用 ps -ef 或 ps aux 命令可以显示所有进程的详细信息。
ps -ef  #或  ps aux 
  1. 检查高 CPU 使用率的进程
    高 CPU 使用率可能会导致系统性能问题。使用 ps 命令按 CPU 使用率排序并查找高 CPU 使用率的进程:
ps aux --sort=-%cpu | head -10 
  1. 检查高内存使用率的进程
    高内存使用率也会影响系统性能。使用 ps 命令按内存使用率排序并查找高内存使用率的进程:
ps aux --sort=-%mem | head -10 
  1. 检查僵尸进程
    僵尸进程是已经终止但其父进程尚未调用 wait() 系统调用的进程。这些进程占用系统资源,可以使用 ps 命令查找:
ps aux | grep 'Z'  # 或  ps -eo stat,pid,ppid,cmd | grep -w Z  或 ps -ef | grep defunct 
  1. 查找特定用户的进程
    有时需要检查某个特定用户的进程,使用 ps -u 可以实现:
ps -u username  #如  ps -u root 
  1. 查看特定进程的详细信息
    假设你已经找到一个可能有问题的进程,可以使用 ps -p 查看其详细信息:
ps -p  -o pid,ppid,user,%cpu,%mem,cmd  #如,查看 PID 为 6379 的进程信息:  ps -p 6379 -o pid,ppid,user,%cpu,%mem,cmd 
  1. 结合 grep 过滤特定进程
    有时需要查找特定名称的进程,可以使用 grep 过滤:
ps -ef | grep process_name  #如,查找所有 nginx 进程:  ps -ef | grep nginx 
  1. 查看进程树
    查看进程树有助于了解进程之间的父子关系:
ps -ef --forest 
  1. 监控进程状态
    实时监控进程状态,可以使用 watch 命令结合 ps:
watch -n 1 'ps aux --sort=-%cpu | head -10'  
  1. 检查 I/O 密集型进程
ps -eo pid,comm,etime,pcpu,pmem,pri,nice,stat,vsize,rss,wchan 
  1. 结合其他工具
    为了进一步分析和排查问题,可以结合其他系统监控工具,如 top、htop、iotop、vmstat、sar 等。

示例:

  • 场景1:CPU使用率过高
    使用 ps 查找高 CPU 使用率的进程:
ps aux --sort=-%cpu | head -10 
  • 识别占用 CPU 最高的进程,然后使用 ps -p 查看详细信息:
ps -p  -o pid,ppid,user,%cpu,%mem,cmd 

确认进程是否可以终止或优化。如果需要,使用 kill 命令终止进程:

kill -9  
  • 场景2:内存不足
    使用 ps 查找高内存使用率的进程:
ps aux --sort=-%mem | head -10 

识别占用内存最高的进程,然后使用 ps -p 查看详细信息:

ps -p  -o pid,ppid,user,%cpu,%mem,cmd 

确认进程是否可以终止或优化。如果需要,使用 kill 命令终止进程:

kill -9  

相关内容

热门资讯

今年以来!开心泉州免费辅助(辅... 今年以来!开心泉州免费辅助(辅助挂)原来确实有挂(教会开挂辅助脚本)-哔哩哔哩1、金币登录送、破产送...
截至发稿!新道游房卡辅助器(辅... 截至发稿!新道游房卡辅助器(辅助挂)原来是有挂(发现开挂辅助软件)-哔哩哔哩1、新道游房卡辅助器ai...
截至目前!湖南赣湘互娱辅助(辅... 截至目前!湖南赣湘互娱辅助(辅助挂)一直真的有挂(传授开挂辅助脚本)-哔哩哔哩1、湖南赣湘互娱辅助a...
此事引发网友热议!佛手在线破解... 此事引发网友热议!佛手在线破解(辅助挂)一直是有挂的(关于开挂辅助工具)-哔哩哔哩1、佛手在线破解机...
长期以来!青鸟辅助器(辅助挂)... 长期以来!青鸟辅助器(辅助挂)原来真的有挂(了解开挂辅助脚本)-哔哩哔哩1、青鸟辅助器ai辅助优化,...
现有关情况通报如下!丽水都莱辅... 现有关情况通报如下!丽水都莱辅助软件(辅助挂)果然有挂(分享开挂辅助神器)-哔哩哔哩1、丽水都莱辅助...
据相关数据显示!欢乐茶馆挂有没... 据相关数据显示!欢乐茶馆挂有没有(辅助挂)原来有挂(发现开挂辅助安装)-哔哩哔哩1)欢乐茶馆挂有没有...
无独有偶!微信小程序修改器(辅... 无独有偶!微信小程序修改器(辅助挂)原来真的有挂(传授开挂辅助工具)-哔哩哔哩1、玩家可以在微信小程...
有消息称!老友广东麻将辅助(辅... 有消息称!老友广东麻将辅助(辅助挂)一贯是有挂(通报开挂辅助神器)-哔哩哔哩1、让任何用户在无需老友...
据悉!闲娱江西脚本(辅助挂)一... 据悉!闲娱江西脚本(辅助挂)一直真的有挂(推荐开挂辅助脚本)-哔哩哔哩闲娱江西脚本辅助器中分为三种模...