Você está certo, top
parece dar uso incorreto da CPU na primeira iteração. Você pode contornar esse problema assim:
top -b -n2 | grep "Cpu(s)"|tail -n 1 | awk '{print $2 + $4}'
Isso, é claro, levará o dobro do tempo, mas funcionará de qualquer maneira.
Se você ainda deseja que ele funcione mais rápido, use a opção -d
, por exemplo, por um período total de medição de 1 segundo, use metade dele:
top -d 0.5 -b -n2 | grep "Cpu(s)"|tail -n 1 | awk '{print $2 + $4}'