Meu problema é que quando executo meu script ele continua após um comando abaixo:
top -b > output.txt
Os dados na máquina são muito grandes e, portanto, leva algum tempo para recuperar a pilha completa de estatísticas da CPU da top
saída. Ele produz alguns instantaneamente e demora um pouco para obter o resto. (Eu verifiquei apenas executando o comando top no terminal sozinho).
Preciso esperar que todas as estatísticas da CPU, etc., sejam recuperadas (digamos 20 segundos), depois pegar a top
saída após 20 segundos e enviar para output.txt.
Eu sei que sleep é usado para atrasos, mas parece ser necessário em algum lugar especificamente neste caso.
Responder1
Duvido muito que uma máquina deste milênio demore 20 segundos para gerar uma única top
tabela. O mais provável é que você tenha solicitado top
a impressão da saída em intervalospara sempre, e essa saída não é gravada imediatamente devido ao buffer. Em vez disso, tente top -b -n1 > output.txt
.
Responder2
Tente usar o wait
comando.
Assim:
top -bn 1 > output.txt & wait
É suposto esperar até que o processo seja concluído antes de prosseguir.