Você pode usar o loop while:
while :
do
free -m | awk 'NR==2{printf " | Memory Usage: %s/%sMB (%.2f%%)|\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf " | Disk Usage: %d/%dGB (%s) |\n", $3,$2,$5}'
top -bn1 | grep load | awk '{printf " | CPU Load: %.2f |\n",$(NF-2)}'
sleep 1
done
: é um comando interno que sempre retorna true
se você preferir algo mais legível, pode usar true:
while true
do
free -m | awk 'NR==2{printf " | Memory Usage: %s/%sMB (%.2f%%)|\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf " | Disk Usage: %d/%dGB (%s) |\n", $3,$2,$5}'
top -bn1 | grep load | awk '{printf " | CPU Load: %.2f |\n",$(NF-2)}'
sleep 1
done
você pode obter mais informações sobre a diferença entre ":" e "true": Qual é o propósito do: (cólon) GNU Bash embutido?
Se você quiser uma exibição limpa de informações, você pode adicionar a função clear no início do loop, como:
while :
do
clear
free -m | awk 'NR==2{printf " | Memory Usage: %s/%sMB (%.2f%%)|\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf " | Disk Usage: %d/%dGB (%s) |\n", $3,$2,$5}'
top -bn1 | grep load | awk '{printf " | CPU Load: %.2f |\n",$(NF-2)}'
sleep 1
done