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

Linux 如何将top命令与日期列组合,linux,bash,awk,sed,Linux,Bash,Awk,Sed,你好, 我需要添加一个列标题“TIME”,它将显示每次在新行上执行输出时的当前时间,代码如下: top -b -n 1 -p 984 -o +PID -o +VIRT | sed -n '7,12p' | awk '{printf "%1s %-4s\n",$1,$5}' 我正在寻找的输出: TIME PID VIRT 12:00:00 984 1024 12:16:01 984 995 12:44:29 984 1008 (这些值仅用于显示,

你好, 我需要添加一个列标题“TIME”,它将显示每次在新行上执行输出时的当前时间,代码如下:

top -b -n 1 -p 984 -o +PID -o +VIRT | sed -n '7,12p' | awk '{printf "%1s %-4s\n",$1,$5}'
我正在寻找的输出:

TIME      PID     VIRT
12:00:00  984     1024
12:16:01  984     995
12:44:29  984     1008
(这些值仅用于显示,不正确)

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


提前感谢您的帮助

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

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

我建议使用
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

使用awk时不需要sed
cmd | sed-n'7,12p'| awk'{doSomething}'
=
cmd | awk'NR>=7{doSomething}NR==12{exit}'
或各种替代结构。我知道你只是复制了OP的东西,但不妨给他指明正确的方向。