使用此命令监控任何命令行程序的性能
这篇文章最初发表在我的博客上,请点击此处查看原文。
最近我在 Linux 命令行上执行了大量 Bash 脚本和一次性进程,并且一直好奇如何快速监控这些进程的 CPU 和内存使用情况。有些进程似乎会让我 Linux 系统突然停止运行,如果没有即时的资源监控,我无法判断这些进程究竟是消耗了过多的 RAM 还是 CPU(或者两者都消耗?!)。
人们通常会做什么
传统上,关于过程监控的建议包括以下内容:
-
运行您的命令行进程。
-
ps aux
使用通常适用于 Linux 和 Mac 的命令获取进程的 PID 。 -
top
使用以下命令运行该实用程序top -p <pid>
在 Linux 上或
top -pid <pid>
在 Mac OS 上。
但是,我想运行一些会在几秒钟内退出的命令,然后才能运行top
并开始监控它们。我该如何才能在这些命令被调用后立即开始监控它们呢?
我们可以做得更好
与往常一样,Unix 有一个答案:
-
在后台运行命令并将输出通过管道传输,
/dev/null
以便在监视 CPU/内存使用情况时它不会打印在命令行上,例如unzip ~/Downloads/sample.zip > /dev/null &
-
使用以下命令回显该后台进程的 PID
echo $!
-
将两者结合起来,并将进程的 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/内存性能。
-
安装
htop
sudo apt-get install htop
在 Ubuntu 或
brew install htop
在 Mac OS 上使用Homebrew
-
htop
使用而不是top
来运行我们之前的监控命令htop -p `{ unzip ~/Downloads/sample.zip > /dev/null & } && echo $!`
双重奖励:设计您的编辑器以获得更漂亮的 htop
我在 Twitter 上看到一些关于这篇文章的讨论,有人提到我应该在这里添加关于我使用的终端主题的信息,因为 htop 的样式会根据所使用的终端和主题进行调整。我完全同意,所以以下是我的设置:
- 终端仿真器:iTerm2超棒的 Mac OS 终端替代品,具有网格选项卡等酷炫功能。
- Unix shell + 主题框架:
zsh
+ oh-my-zsh查看这篇关于如何安装这些内容的精彩文章(Ubuntu 或 Mac OS 上的类似步骤) oh-my-zsh
theme:默认主题robbyrussell
。设置完成后oh-my-zsh
,可以在~/.zshrc
文件中指定所需的主题,例如ZSH_THEME="robbyrussell"