首页 > 系统相关 >Linux获取进程cpu使用情况

Linux获取进程cpu使用情况

时间:2024-07-15 17:30:25浏览次数:17  
标签:ps Linux PID cpu 获取 time 进程 CPU

相关:{% post_link shell/'Linux获取线程CPU使用情况' %}

CPU使用率

pidstat (推荐)

pidstat -p 进程PID -H -u 间隔秒数 | awk '{if(NR>3){print $1,$8}}'
  • -H: Display timestamp in seconds since the epoch.
  • -u: Report CPU utilization.
  • NR>3: 第四行开始才是有效输出。

awk可能需要加上fflush(stdout): {% post_link shell/'awk-fflush' %}

top

top -b -p 进程PID -d 间隔秒数

-b: Batch mode.

配合awk等可以把CPU使用率给提取出来,但是由于CPU使用率在哪一列是根据~/.toprc确定的,所以要做到portable很麻烦。

ps (不推荐)

注意,这个方法只能用来获取整个进程生命周期的平均CPU使用率。

ps -q 进程PID -o %cpu

输出:

%CPU
52.3
       %cpu        %CPU      cpu utilization of the process in "##.#" format.  Currently, it is the CPU time used
                             divided by the time the process has been running (cputime/realtime ratio), expressed
                             as a percentage.  It will not add up to 100% unless you are lucky.  (alias pcpu).

累积CPU time

C/C++: clock_gettime

获取当前进程的CPU时间戳:

static inline time_t process_cpu_timestamp_ns() {
  struct timespec t;
  if (-1 == clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &t)) {
    perror("clock_gettime");
    return 0;
  }
  return t.tv_sec * 1000000000 + t.tv_nsec;
}

两个CPU时间戳相减就是中间进程消耗的CPU time。

ps

累积CPU time的秒数:

ps -q 进程PID -o cputimes
       cputimes    TIME      cumulative CPU time in seconds (alias times).

参考文献

https://www.baeldung.com/linux/process-periodic-cpu-usage

标签:ps,Linux,PID,cpu,获取,time,进程,CPU
From: https://www.cnblogs.com/searchstar/p/18303608

相关文章

  • ArchLinux微信
    flatpak原生微信。flatpakinstallcom.tencent.WeChatflatpakruncom.tencent.WeChat也可以从系统的启动器里启动。{%post_linkApp/'flatpak教程'%}deepin-wine-wechatyay-Sdeepin-wine-wechat我尝试的版本:3.9.0.28-3如果是KDE的话,大概会报这个错:/opt/apps/com......
  • Linux 报错INFO: task blocked for more than 120 seconds
     一般情况下,Linux会把可用内存的40%的空间作为文件系统的缓存。 当缓存快满时,文件系统将缓存中的数据整体同步到磁盘中。但是系统对同步时间有最大120秒的限制。 如果文件系统不能在时间限制之内完成数据同步,则会发生上述的错误。 这通常发生在内存很大的系统上。系统......
  • linux 审核策略
    审计范围应覆盖到服务器和重要客户端上的每个操作系统用户和数据库用户;开启审核策略,若日后系统出现故障、安全事故则可以查看系统日志文件,排除故障、追查入侵者的信息等。查看rsyslog与auditd服务是否开启应保护审计记录,避免受到未预期的删除、修改或覆盖等。防止重要日志信息......
  • Nessus Professional 10.7 Auto Installer for RHEL 9/AlmaLinux 9/Rocky Linux 9 (up
    NessusProfessional10.7AutoInstallerforRHEL9/AlmaLinux9/RockyLinux9(updatedJul2024)发布Nessus试用版自动化安装程序,支持macOSSonoma、RHEL9和Ubuntu24.04请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-rhel-9/,查看最新版。原创作品,......
  • Linux中使用Docker安装Redis容器以及布隆过滤器
    前言在项目中,一般普遍都会用到Redis,在准备学习Redis的相关的东西时,其中提到了缓存穿透、缓存击穿、缓存雪崩的问题。其中对于缓存穿透的一个解决方案中就有提到布隆过滤器,而布隆过滤器的也有许多提供方式(Guava、Redisson、RedisBloom),前面都是基于本地的,所以就选择了Redis官方......
  • Linux 性能优化:轻松入门
    文章目录前言一、磁盘性能优化1、磁盘RAID模式选择2、文件系统优化二、优化CPU1、性能监控:2、进程优先级调整:3、进程与CPU绑定:三、优化内存四、网络性能优化1、调整TCP缓冲区大小2、修改系统级别的文件描述符的数量3、调整TCP时间等待(TIME-WAIT)套接字的......
  • Linux多线程
    多线程1.线程概念1.1地址空间和页表的映射关系地址空间是进程能看到的拥有的资源的大小页表决定了进程实际拥有资源的大小和位置所以对进程地址空间和页表进行适当的资源划分,就可以对一个进程的所有资源进行分类进程地址空间如何与页表和物理内存产生映射的过程首先进......
  • Windows节点加入K8S集群(K8S搭建Linux和Window混合集群)
    说明:K8S多数情况用于linux系统的集群,目前很少人实践linux和windows的混合集群。linux和windows的K8S混合集群,是以linux为Master节点,Windows为Node节点的。本示例linux采用centos7.6,windows采用windowsserver2019(均为虚拟机)。一、前提准备  1.熟悉linux的基本使......
  • Linux命令
    说明本章应某位友友要求更新一版linux的学习资料Linux中命令通用的格式:command[-options][parameter]其中comman为命令本身,options(可选,非必填)为命令的一些选项,可以通过选项控制命令的行为细节,parameter(可选,非必填)命令的参数,多数用于命令的指向目标示例:1.ls-l/home/ithe......
  • Linux 中 sed命令在指定行前添加空行
     001、[root@PC1test]#lsa.txt[root@PC1test]#cata.txt33aa44aa88aa33aaffkk33aa8822mm8833442299[root@PC1test]#sed'2s/.*/\n&/'a.txt##在第二行前添加空行33aa44aa88aa33aaffkk33aa8822mm8833442299......