Search code examples
linuxloggingmemoryfree

How to log timestamp before every line in log?


I want to log memory usage every 5th second and hence I am using free -s 5 -m> memory.log

How to add timestamp before every lie in this log?

Expected output:

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

Solution

  • I found out that there is no single line command to do that and this can be achieved by writing and executing a script.

    So the shell script is:

    #!/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