top筛选java输出到文件_linux – 将时间戳添加到“top”命令输出
为了进行过滤,可以使用awk而不是grep轻松地为每个top -b运行的顶行输出添加时间戳,因为awk has time functions built in可以将它们注入到它的输出中.
我没有运行大部分这些程序,所以我在我的例子中为过滤器添加了bash和ssh ……
您可以使用简单的纪元时间戳(自01-JAN-1970以来的秒数)来完成:
top -b | awk '/bash|ssh|tesseract|node|java|beam.smp|dockerd/ {print systime(), $0}'
哪个更小,存储更清晰:
bash-$top -b | awk '/bash|ssh|tesseract|node|java|beam.smp|dockerd/ {print systime(), $0}'
1490018813 1229 root 20 0 891536 42868 28348 S 0.0 0.3 15:07.30 dockerd
1490018813 1240 root 20 0 65520 6208 5488 S 0.0 0.0 0:00.01 sshd
1490018813 2666 tim 20 0 24336 7136 3492 S 0.0 0.0 0:00.05 bash
1490018813 2710 tim 20 0 46984 5324 4644 S 0.0 0.0 0:09.08 ssh
1490018813 2783 root 20 0 105988 7184 6184 S 0.0 0.0 0:00.00 sshd
1490018813 2804 root 20 0 105988 7404 6408 S 0.0 0.0 0:00.00 sshd
或者使用更人性化的时间戳.
top -b | awk '/bash|ssh|tesseract|node|java|beam.smp|dockerd/ {print strftime("%Y-%m-%d-%H:%M:%S", systime(), $0}'
哪个更快理解:
bash-[541]$top -b -n 3 | awk '/ssh|bash|java|dockerd/ {print strftime("%Y-%m-%d-%H:%M:%S", systime()), $0}'
2017-03-20-10:04:23 1229 root 20 0 891536 42868 28348 S 0.0 0.3 15:07.24 dockerd
2017-03-20-10:04:23 1240 root 20 0 65520 6208 5488 S 0.0 0.0 0:00.01 sshd
2017-03-20-10:04:23 2666 tim 20 0 24336 7136 3492 S 0.0 0.0 0:00.05 bash
2017-03-20-10:04:23 2710 tim 20 0 46984 5324 4644 S 0.0 0.0 0:09.08 ssh
2017-03-20-10:04:23 2783 root 20 0 105988 7184 6184 S 0.0 0.0 0:00.00 sshd
2017-03-20-10:04:23 2804 root 20 0 105988 7404 6408 S 0.0 0.0 0:00.00 sshd
2017-03-20-10:04:23 2909 tim 20 0 105988 5072 4072 S 0.0 0.0 0:00.20 sshd
2017-03-20-10:04:23 2931 tim 20 0 105988 4252 3224 S 0.0 0.0 0:00.00 sshd