使用此命令监控任何命令行程序的性能

2025-06-04

使用此命令监控任何命令行程序的性能

这篇文章最初发表在我的博客上,请点击此处查看原文

最近我在 Linux 命令行上执行了大量 Bash 脚本和一次性进程,并且一直好奇如何快速监控这些进程的 CPU 和内存使用情况。有些进程似乎会让我 Linux 系统突然停止运行,如果没有即时的资源监控,我无法判断这些进程究竟是消耗了过多的 RAM 还是 CPU(或者两者都消耗?!)。

人们通常会做什么

传统上,关于过程监控的建议包括以下内容:

  1. 运行您的命令行进程。

  2. ps aux使用通常适用于 Linux 和 Mac 的命令获取进程的 PID 。

  3. top使用以下命令运行该实用程序

    top -p <pid>
    

    在 Linux 上或

    top -pid <pid>
    

    在 Mac OS 上。

但是,我想运行一些会在几秒钟内退出的命令,然后才能运行top并开始监控它们。我该如何才能在这些命令被调用后立即开始监控它们呢?

我们可以做得更好

与往常一样,Unix 有一个答案:

  1. 在后台运行命令并将输出通过管道传输,/dev/null以便在监视 CPU/内存使用情况时它不会打印在命令行上,例如

    unzip ~/Downloads/sample.zip > /dev/null &
    
  2. 使用以下命令回显该后台进程的 PID

    echo $!
    
  3. 将两者结合起来,并将进程的 pid 传递top

    top -p `{ unzip ~/Downloads/sample.zip > /dev/null & } && echo $!`
    

    在 Linux 上或

    top -pid `{ unzip ~/Downloads/sample.zip > /dev/null & } && echo $!`
    

    在 Mac OS 上。

嘭!你只需一个命令就能立即开始监控你的进程。真是太棒了!

奖励:使用htop而不是top

我超爱htop,它是一款适用于 Linux 和 Mac OS 的进程监控工具。来吧,颜色都出来了!让我们用它来top更好地了解进程的 CPU/内存性能。

  1. 安装htop

    sudo apt-get install htop
    

    在 Ubuntu 或

    brew install htop
    

    在 Mac OS 上使用Homebrew

  2. htop使用而不是top运行我们之前的监控命令

    htop -p `{ unzip ~/Downloads/sample.zip > /dev/null & } && echo $!`
    

请参阅下面的单个命令的实际操作!
使用 htop 进行单命令进程监控

双重奖励:设计您的编辑器以获得更漂亮的 htop

我在 Twitter 上看到一些关于这篇文章的讨论,有人提到我应该在这里添加关于我使用的终端主题的信息,因为 htop 的样式会根据所使用的终端和主题进行调整。我完全同意,所以以下是我的设置:

  1. 终端仿真器:iTerm2超棒的 Mac OS 终端替代品,具有网格选项卡等酷炫功能。
  2. Unix shell + 主题框架:zsh+ oh-my-zsh查看这篇关于如何安装这些内容的精彩文章(Ubuntu 或 Mac OS 上的类似步骤)
  3. oh-my-zshtheme:默认主题robbyrussell。设置完成后oh-my-zsh,可以在~/.zshrc文件中指定所需的主题,例如ZSH_THEME="robbyrussell"
文章来源:https://dev.to/agrim/monitor-the-performance-of-any-command-line-program-with-this-single-command-46je
PREV
Docker 从外壳到核心,它是什么?它是如何工作的?Docker 是如何工作的?结论:
NEXT
为什么开发者应该使用 CMS?内容管理系统为何如此重要?内容管理系统对开发者的最大益处:编码很难,理解别人的代码更难。CMS 开发者常用的语言和框架 结语