Mein Problem besteht darin, dass mein Skript beim Ausführen über den folgenden Befehl hinaus fortgesetzt wird:
top -b > output.txt
Die Daten auf dem Computer sind ziemlich groß und daher dauert es einige Zeit, den vollständigen Stapel der CPU-Statistiken aus der top
Ausgabe abzurufen. Einige werden sofort ausgegeben und es dauert eine Weile, bis der Rest verfügbar ist. (Ich habe dies überprüft, indem ich einfach den Befehl top im Terminal ausgeführt habe.)
Ich muss warten, bis alle CPU-Statistiken usw. abgerufen wurden (sagen wir 20 Sekunden), dann top
nach 20 Sekunden die Ausgabe erfassen und in output.txt ausgeben.
Ich weiß, dass der Ruhezustand für Verzögerungen verwendet wird, aber in diesem Fall scheint er irgendwo speziell erforderlich zu sein.
Antwort1
Ich bezweifle sehr, dass eine Maschine aus diesem Jahrtausend 20 Sekunden braucht, um eine einzige top
Tabelle zu generieren. Wahrscheinlicher ist, dass das Problem darin liegt, dass Sie angewiesen haben, top
die Ausgabe in Intervallen zu drucken .für immer, und die Ausgabe wird aufgrund der Pufferung nicht sofort geschrieben. Versuchen Sie es top -b -n1 > output.txt
stattdessen mit:
Antwort2
Versuchen Sie, den wait
Befehl zu verwenden.
So was:
top -bn 1 > output.txt & wait
Es sollte gewartet werden, bis der Vorgang abgeschlossen ist, bevor fortgefahren wird.