Ich versuche ein einfaches Skript zu schreiben, das die Speicherauslastung eines bestimmten Prozesses kontinuierlich überwacht. Also versuche ich, 'top' mit dem Befehl grep zu verwenden, um die Speichernutzung eines bestimmten Prozesses zu erfassen, sowie den Befehl free -m auszuführen und ihre Ausgaben in Textdateien zu schreiben.Parallele Ausführung von "top" - und "free-m" -Befehlen
top | grep --line-buffered -i process_name >> /home/output_txt1 &
while (1)
free -m >> /home/output_txt2
sleep 2
end &
Allerdings, wenn ich die Befehle ausführen, bekomme ich
- Suspended (tty Ausgang) nach oben | grep --line-gepufferte -i process_name >>/home/output_txt1 &
Was mache ich falsch und wie kann ich das umsetzen, was ich will? Ich weiß, dass ich auch "watch" benutzt habe, bevor ich die while-Schleife benutze und es hat auch nicht funktioniert.
Von 'man top': -b: Batch-Modus-Betrieb Startet oben im" Batch-Modus ", was nützlich sein könnte, um Ausgaben von oben zu anderen Programmen oder zu einer Datei zu senden. In diesem Modus akzeptiert top keine Eingabe und wird ausgeführt, bis die Iterationsbeschränkung, die Sie mit der Befehlszeilenoption '-n' festgelegt haben, oder bis zum Abbruch ausgeführt wird. Sie können die Option -b ausprobieren. –
Danke für den Tipp, ich habe -b und jetzt; top-Befehl funktioniert ohne Fehler. Allerdings, was ich von dem Skript beabsichtigte passiert nicht, ich finde, dass die Top-Befehl kontinuierlich laufen und korrekt in die Datei schreiben, während der "free-m" -Befehl nur einmal ausgeführt wird. Ist es etwa so, dass der "top" -Befehl den Prozess entführt und nicht erlaubt, dass die "while" -Schleife erneut ausgeführt wird? –