Esqueça o relógio, isso deve acontecer, pelo menos teoricamente:
while true; do
# I cut the header first with tail
cat file <(ps aux | tail -n +2 | sort -rk 3,3 | head -n 2) | sort | uniq | sponge file
# A certain amount of delay
sleep 0.1
done
O único problema é que, como o uso da CPU de cada processo varia com o tempo, e o que você está procurando é particularmente o uso da CPU, o efeito de uniq
é muito limitado e ainda uma grande quantidade de dados é produzida. Você pode usar cut
para suprimir as variáveis que não são importantes para você, para que a variação delas não aumente o número de pontos de dados produzidos.