Ich habe also eine Basisdatei, die Speichernutzung, Switches, Threads usw. anzeigt, und ich möchte, dass diese Ergebnisse in eine Protokolldatei, eine Textdatei, gedruckt werden. Momentan starte ich meinen Befehl, indem ich „./file.sh 1 1“ eingebe, wobei das erste Argument bestimmt, wie viele Schleifen der Befehl ausgeführt wird, und das zweite Argument bestimmt, wie lange er pausiert. Es handelt sich im Grunde um eine While-Schleife, die alle diese Befehle ausführt.
Ich möchte die Ergebnisse zur Nachverfolgung in eine Protokolldatei exportieren. Mein Ziel ist es, dies letztendlich über einen Zeitraum von 24 Stunden laufen zu lassen und alle Ergebnisse zu protokollieren.
Ich möchte grundsätzlich, dass all dies in eine Protokolldatei geschrieben wird. Wenn ich > log.txt oder >> log.txt hinzufüge, wird es wie gewünscht in die Protokolldatei gedruckt. Es wird jedoch nicht im Terminal angezeigt.
echo "Threads:"
grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }' > log.txt
echo""
echo "Free memory:"
grep MemFree /proc/meminfo > log.txt
echo ""
echo "Firefox usage"
pidstat -C firefox -w -u > log.txt
echo ""
Antwort1
Wenn Sie sowohl in eine Datei protokollieren als auch auf stdout ausgeben möchten, können Sie Folgendes versuchen tee
:
echo "Threads:"
grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }' | tee -a log.txt
echo""
echo "Free memory:"
grep MemFree /proc/meminfo | tee -a log.txt
echo ""
echo "Firefox usage"
pidstat -C firefox -w -u | tee -a log.txt
echo ""
Wenn Sie möchten, dass alles an Ihre Protokolldatei gesendet wird, können wir stattdessen Folgendes verwenden:
(
echo "Threads:"
grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }'
echo""
echo "Free memory:"
grep MemFree /proc/meminfo
echo ""
echo "Firefox usage"
pidstat -C firefox -w -u
echo ""
) | tee -a log.txt