Estou combinando amostras de sar ao vivo com colar e tentando formatar a saída com o awk live.
Funciona como esperado para formatar a saída, mas não faz a formatação ao vivo em cada amostra e, em vez disso, espera até que os 50 segundos completos (5 amostras de s, 10 deles) sejam concluídos.
Solution was (stdbuf -o0) to disable buffering on the output stream
stdbuf -o0 paste <(sar -q 1 5) <(sar -r 1 5) | awk '{printf "%8s %2s %7s %7s %7s %8s %9s %8s\n", $1,$2,$3,$4,$5,$11,$12,$13}'
11:53:21 AM runq-sz plist-sz ldavg-1 kbmemfree kbmemused %memused
11:53:22 AM 1 167 0.03 46504 449264 90.62
11:53:23 AM 1 167 0.03 46504 449264 90.62
11:53:24 AM 1 167 0.03 46504 449264 90.62
11:53:25 AM 1 167 0.03 46008 449760 90.72
11:53:26 AM 1 167 0.03 46624 449144 90.60
Average: 1 167 0.03 0.05 90.64 40876 172816
Primeiro comando sar
sar -q 5 10 | awk '{printf "%-8s %-2s %7s %7s %7s\n", $1,$2,$3,$4,$5}'
01:02:08 AM runq-sz plist-sz ldavg-1
01:02:13 AM 1 160 0.09
01:02:18 AM 1 160 0.08
01:02:23 AM 1 160 0.08
Segundo comando sar
sar -r 5 10 | awk {'printf "%-8s %-2s %9s %9s %8s\n", $1,$2,$3,$4,$5}'
01:19:27 AM kbmemfree kbmemused %memused
01:19:32 AM 113840 381928 77.04
01:19:37 AM 113800 381968 77.05
01:19:42 AM 113840 381928 77.04
Usar o colar sozinho funciona para combinar os relatórios do sar em tempo real
paste <(sar -q 5 10) <(sar -r 5 10)
01:21:09 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 01:21:09 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
01:21:14 AM 2 159 0.00 0.03 0.05 0 01:21:14 AM 111416 384352 77.53 12512 142052 948776 191.37 195400 121036 56
01:21:19 AM 2 157 0.00 0.03 0.05 0 01:21:19 AM 111928 383840 77.42 12512 142056 947168 191.05 195060 121036 60
01:21:24 AM 1 156 0.00 0.03 0.05 0 01:21:24 AM 112244 383524 77.36 12528 142060 946784 190.97 194932 121052 72
Tentar formatar com o awk dentro da pasta não mostra nada até que as amostras do sar sejam concluídas
As mesmas coisas acontecem ao fazer a formatação do awk depois que a colagem é combinada
paste <(sar -q 5 10 | awk '{printf "%-8s %-2s %7s %7s %7s\n", $1,$2,$3,$4,$5}') <(sar -r 5 10 | awk {'printf "%9s %9s %8s\n", $3,$4,$5}')
01:56:53 AM runq-sz plist-sz ldavg-1 kbmemfree kbmemused %memused
01:56:58 AM 1 157 0.00 99664 396104 79.90
01:57:03 AM 1 157 0.00 99664 396104 79.90
01:57:08 AM 1 157 0.00 99644 396124 79.90
01:57:13 AM 1 157 0.00 99612 396156 79.91
01:57:18 AM 1 157 0.00 99628 396140 79.90
01:57:23 AM 1 157 0.00 99656 396112 79.90
01:57:28 AM 1 157 0.00 99520 396248 79.93
01:57:33 AM 1 157 0.00 99656 396112 79.90
01:57:38 AM 2 157 0.00 99268 396500 79.98
01:57:43 AM 1 157 0.00 100152 395616 79.80
Average: 1 157 0.00 0.01 396122 79.90 17557
Se eu usar os logs completos do sar em vez de amostras, isso funciona obviamente
paste <(sar -q | awk '{printf "%-8s %-2s %7s %7s %7s\n", $1,$2,$3,$4,$5}') <(sar -r | awk {'printf "%9s %9s %8s\n", $3,$4,$5}')
12:00:01 AM runq-sz plist-sz ldavg-1 kbmemfree kbmemused %memused
12:10:01 AM 3 156 0.00 71500 424268 85.58
12:20:01 AM 1 150 0.00 110836 384932 77.64
12:30:01 AM 1 150 0.00 108164 387604 78.18
Então, existe alguma maneira de ter o comando paste atualizado para o awk após cada amostra para que eu possa assistir a saída formatada ao vivo?