首页 > 解决方案 > 如何在日志中的每一行之前记录时间戳?

问题描述

我想每 5 秒记录一次内存使用情况,因此我正在使用free -s 5 -m> memory.log

如何在此日志中的每个谎言之前添加时间戳?

预期输出:

Tue Jan 21 06:50:44 UTC 2020
             total       used       free     shared    buffers     cached
Mem:          7809       6268       1540          0         57       3497
-/+ buffers/cache:       2713       5095
Swap:            0          0          0


Tue Jan 21 06:50:49 UTC 2020
             total       used       free     shared    buffers     cached
Mem:          7809       6268       1540          0         57       3497
-/+ buffers/cache:       2713       5095
Swap:            0          0          0

标签: linuxloggingmemoryfree

解决方案


我发现没有单行命令可以做到这一点,这可以通过编写和执行脚本来实现。

所以shell脚本是:

#!/bin/bash -e

echo "      date     time $(free -m | grep total | sed -E 's/^    (.*)/\1/g')" >> /var/log/memory_utilisation.log
while true; do
    echo "$(date '+%Y-%m-%d %H:%M:%S') $(free -m | grep Mem: | sed 's/Mem://g')" >> /var/log/memory_utilisation.log
    sleep 5
done

推荐阅读