linux命令每日更新-ps、pstree和pidstat命令

Posted on 2024-07-11 11:30  私有运维  阅读(114)  评论(0)    收藏  举报

ps命令用于显示当前系统的进程状态。它是最常用的进程管理工具之一,可以提供有关正在运行的进程的各种信息,包括进程ID(PID)、用户ID(UID)、命令行参数、CPU使用率、内存使用量等。

语法:

ps [选项]...

常见选项:

  • -a: 显示所有进程,包括init进程和session leader进程。

  • -e: 显示所有进程,包括正在运行的、等待的和停止的进程。

  • -f: 显示完整的进程信息,包括进程ID、用户ID、命令行参数、CPU使用率、内存使用量等。

  • -l: 显示详细的进程信息,包括进程ID、用户ID、命令行参数、状态、优先级、父进程ID、开始时间和终端设备等。

  • -p: 显示指定进程的信息。

  • -t: 显示与指定终端设备关联的进程的信息。

  • -u: 显示指定用户的进程的信息。

运维案例:

  • 查看所有正在运行的进程:
ps
  • 查看指定进程的信息:
ps -p 1234
  • 查看与tty1终端设备关联的进程的信息:
ps -t tty1
  • 查看root用户的进程的信息:
ps -u root
  • 查看详细的进程信息:
ps -efl

pstree命令

pstree命令以树形结构显示当前系统的进程层次关系。它可以直观地展示进程之间的父子关系,方便查看进程启动情况和进程之间的依赖关系。

语法:

pstree [选项]...

常见选项:

  • -c: 显示命令行参数。

  • -p: 显示进程ID(PID)。

  • s: 显示会话ID(SID)。

  • u: 显示用户名。

运维案例:

  • 查看所有进程的树形结构:
pstree
  • 显示进程ID和命令行参数:
pstree -cp
  • 显示进程ID、用户名和会话ID:
pstree -psu

pidstat命令

pidstat命令用于监控进程的资源使用情况,包括CPU利用率、内存使用量、I/O操作等。它可以提供有关进程性能的详细数据,帮助管理员识别和解决性能问题。

语法:

pidstat [选项]... [pid ...]

常见选项:

  • -u: 监控CPU使用情况。

  • r: 监控内存使用量。

  • d: 监控I/O操作。

  • h: 显示帮助信息。

  • -p: 指定要监控的进程ID。

  • i: 指定采样间隔(以秒为单位)。

  • t: 指定采样次数。

运维案例:

  • 监控所有进程的CPU使用情况:
pidstat -u
  • 监控进程1234的CPU使用率、内存使用量和I/O操作:
pidstat -udr -p 1234
  • 每隔1秒监控进程1234的CPU使用率、内存使用量和I/O操作,持续10次:
pidstat -udr  -p 1234 1 10

总结

ps、pstree和pidstat命令是Linux系统中常用的进程管理工具,它们可以提供有关进程的各种信息,帮助管理员监控进程状态、分析进程性能和解决进程问题。

以下是一些使用ps、pstree和pidstat命令的最佳实践:

  • 使用ps命令定期检查正在运行的进程,以识别可疑或消耗大量资源的进程。

  • 使用pstree命令可视化进程之间的关系,以更好地理解进程启动情况和进程之间的依赖关系。

  • 使用pidstat命令监控进程的资源使用情况,以识别和解决性能问题。

以下是一些使用ps、pstree和pidstat命令的实际运维案例:

  • 案例1:排查系统性能问题

假设系统出现卡顿或响应缓慢的情况,管理员可以使用pidstat命令监控进程的资源使用情况,以识别导致性能问题的进程。例如,可以使用以下命令监控所有进程的CPU使用率:

pidstat -u

如果发现某个进程的CPU使用率持续高,

pidstat -p 1234

进一步监控该进程的CPU使用率、内存使用量和I/O操作。如果确认该进程是导致性能问题的元凶,可以采取以下措施:

  • 终止该进程:
kill -9 1234
  • 调整该进程的资源限制:
ulimit -cpu 1000 -p 1234
ulimit -n 1024 -p 1234
  • 升级硬件或优化软件。

  • 案例2:分析进程启动情况

如果需要分析某个进程的启动情况,可以使用pstree命令查看该进程的进程树。例如,可以使用以下命令查看进程1234的进程树:

pstree -p 1234

该命令将显示进程1234及其子进程的层次关系,包括每个进程的PID和命令行参数。通过分析进程树,可以了解进程的启动过程和依赖关系。

  • 案例3:追踪可疑进程

如果发现可疑进程,可以使用ps命令查看该进程的详细信息,包括进程ID、用户ID、命令行参数、启动时间等。例如,可以使用以下命令查看进程1234的详细信息:

ps -p 1234 -l

该命令将显示有关进程1234的详细信息,包括该进程的启动时间和命令行参数。如果发现该进程的参数中包含可疑内容,可以进一步调查该进程。

注意事项:

  • 使用ps、pstree和pidstat命令时,需要具有root权限或sudo权限。

  • 使用pidstat命令监控进程时,需要注意采样间隔和采样次数,避免过度消耗系统资源。

  • 分析进程信息时,需要结合系统的实际情况进行判断,避免误判。

排查服务器响应变慢的步骤和解决方案

案例背景:

系统管理员发现服务器响应变慢,怀疑某个进程占用了过多资源。

排查步骤:

  1. 收集信息
  • 使用 tophtop 命令查看系统的整体资源使用情况,包括CPU使用率、内存使用率、磁盘I/O和网络I/O。

  • 使用 pspidstat 命令查看各个进程的资源使用情况,重点关注CPU使用率和内存使用率高的进程。

  • 使用 pstree 命令查看进程树,了解进程之间的依赖关系。

  1. 分析信息
  • 根据收集到的信息,判断哪些进程占用了过多资源。

  • 如果发现某个进程的CPU使用率或内存使用率持续高,则需要进一步分析该进程。

  • 可以使用 stracegprof 等工具分析进程的执行情况,找出导致性能问题的代码。

  1. 解决问题
  • 终止该进程:

    kill -9 PID
    
  • 调整该进程的资源限制:

    ulimit -cpu 1000 -p PID
    ulimit -n 1024 -p PID
    
  • 修复导致性能问题的代码。

  • 如果确定某个进程是导致性能问题的元凶,可以采取以下措施:

  1. 监控和优化
  • 解决问题后,需要持续监控服务器的性能,以确保问题没有再次出现。

  • 可以定期使用 tophtop 命令查看系统的资源使用情况,并根据需要调整进程的资源限制或优化代码。

解决方案:

以下是一些具体的解决方案建议:

  • 如果是CPU密集型进程导致的性能问题,可以考虑以下方案:

  • 升级CPU或增加CPU核心数。

  • 调整进程的优先级。

  • 将进程迁移到其他服务器。

  • 如果是内存密集型进程导致的性能问题,可以考虑以下方案:

  • 增加内存容量。

  • 调整进程的内存使用限制。

  • 优化代码,减少内存使用。

  • 如果是I/O密集型进程导致的性能问题,可以考虑以下方案:

  • 升级磁盘或网络设备。

  • 调整进程的I/O优先级。

  • 优化代码,减少I/O操作。

注意事项:

  • 在排查和解决问题过程中,需要注意避免影响正常服务的进行。

  • 如果不确定如何解决问题,可以寻求其他运维人员或开发人员的帮助。

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3