Então eu tenho um arquivo básico que mostra o uso de memória, switches, threads etc. e quero que esses resultados sejam impressos em um arquivo de log, um arquivo de texto. No momento eu inicio meu comando digitando "./file.sh 1 1" enquanto o primeiro argumento determina quantos loops ele executará o comando, e o segundo argumento determina quanto tempo ele irá dormir. É basicamente um loop while executando todos esses comandos.
Quero exportar os resultados para um arquivo de log para acompanhar. No final, meu objetivo é executar isso por um período de 24 horas e registrar todos os resultados.
Basicamente, quero que tudo isso voe para um arquivo de log; se eu adicionar > log.txt ou >> log.txt, ele será impresso no arquivo de log como eu quero. Mas isso não aparece no terminal.
echo "Threads:"
grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }' > log.txt
echo""
echo "Free memory:"
grep MemFree /proc/meminfo > log.txt
echo ""
echo "Firefox usage"
pidstat -C firefox -w -u > log.txt
echo ""
Responder1
Se você deseja registrar em arquivo e enviar para stdout, você pode tentar tee
:
echo "Threads:"
grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }' | tee -a log.txt
echo""
echo "Free memory:"
grep MemFree /proc/meminfo | tee -a log.txt
echo ""
echo "Firefox usage"
pidstat -C firefox -w -u | tee -a log.txt
echo ""
Se você quiser que tudo seja enviado para o seu arquivo de log, poderíamos usar:
(
echo "Threads:"
grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }'
echo""
echo "Free memory:"
grep MemFree /proc/meminfo
echo ""
echo "Firefox usage"
pidstat -C firefox -w -u
echo ""
) | tee -a log.txt