我的目标是在易于解析的时间序列中跟踪特定命令的资源使用情况。下面是我跟踪node
3 个批次的所有命令的示例:
top -b -n3 | grep node
222097 root 20 0 954444 672616 32452 S 105.9 4.1 46:23.02 node
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
222097 root 20 0 954444 672616 32452 S 159.8 4.1 46:27.83 node
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
222097 root 20 0 954444 672616 32452 S 167.1 4.1 46:32.86 node
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
问题是没有简单的方法来区分批次。在这个简单的示例中,很容易看到断点,但在较长的系列中或具有更多进程的系列中,就变得很困难。
通过一些繁重的脚本,我们可以做一些奇特的事情,但我想保持简单。希望输出:
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
------------------------------------------------------------------------------
222097 root 20 0 954444 672616 32452 S 159.8 4.1 46:27.83 node
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
------------------------------------------------------------------------------
222097 root 20 0 954444 672616 32452 S 167.1 4.1 46:32.86 node
221922 root 20 0 305792 51408 23900 S 0.0 0.3 0:00.58 node
222113 root 20 0 554304 343092 23736 S 0.0 2.1 0:26.25 node
答案1
这个不完美的 bash 脚本比写这篇文章花费的时间更少:
# /bin/bash
echo "Monitor process $1"
echo " for $2 batches"
for i in $(seq 1 $2); do
top -b -n 1 | grep $1
echo "-------------------------------------------------";
sleep 1
done