如何将top命令与日期列组合

时间:2017-03-23 22:22:14

标签: linux bash awk sed

美好的一天, 我需要添加一个Column标题" TIME"这将显示每次使用以下代码在新行上执行输出的当前时间:

top -b -n 1 -p 984 -o +PID -o +VIRT | sed -n '7,12p' | awk '{printf "%1s %-4s\n",$1,$5}'

输出I' m寻找:

TIME      PID     VIRT
12:00:00  984     1024
12:16:01  984     995
12:44:29  984     1008

(这些值仅用于显示,不正确)

它也应该是一个无限循环,间隔为10秒,直到用户停止它。 一切都是从PIDandVIRT.sh执行的 (Linux脚本)

感谢您提前获得帮助

2 个答案:

答案 0 :(得分:2)

我建议使用ps命令代替top

echo "TIME PID VSIZE"
while true ; do
    echo "$(date +%H:%I:%S) $(ps -p 984 -o pid,vsize --no-headers)"
    sleep 1
done

答案 1 :(得分:1)

awk变量设置为date命令的结果:

awk -v time=$(date '+%H:%M:%S') '{printf "%s %1s %-4s\n", time, $1, $5}'

要使其循环播放,请使用while

while :; do
    top -b -n 1 -p 984 -o +PID -o +VIRT | sed -n '7,12p' | awk -v time=$(date '+%H:%M:%S') '{printf "%s %1s %-4s\n", time, $1, $5}'
    sleep 10
done