Ich habe angefangen, eine große Datei im Hintergrund mit herunterzuladen
$ nohup wget http://example.tld/big.iso &
Das gibt mir auch eine nohup.out
Datei, die die Ausgabe von enthält wget
.
Wenn ich später den Download-Vorgang sehen möchte, könnte ich ihn verwenden, $ tail -f nohup.out
aber das füllt mein Terminalfenster schneller aus, als ich es mir gewünscht hätte. Was ich sehen möchte, ist die letzte Zeile, die ständig aktualisiert wird (genau wie bei wget
alleiniger Verwendung ).
Ich habe es versucht, $ tail -n 1 -f nohup.out
aber es scheint nur das anfängliche Tailing zu beeinflussen.
Im Allgemeinen würde dieses Problem gelöst, wenn es möglich ist, die Anzahl der verfügbaren / sichtbaren Zeilen der Ausgabe eines Befehls zu begrenzen (in diesem Fall auf 1). Sozusagen die Ausgabe in einem Kreispuffer - denken Sie nur an den normalen Fortschrittsbalken, $ wget example.tld/big.iso
der gedruckt wird.
Gibt es eine solche Lösung?
Oder klettere ich falsch auf den Baum? (Das heißt, wäre es einfacher, die nohup
Ausgabe zu begrenzen oder etwas anderes zu tun?)
tail
jede Sekunde einen neuen Prozess auslöst, der Sie möglicherweise interessiert oder nicht. Stellen Sie außerdem sicher, dass Sie ein Intervall von weniger als einer Sekunde angeben (z. B.watch -n 0.1
), um den Teil "ständig aktualisiert" zu simulieren. (Dies erhöht natürlich auch die Anzahl der Prozesse und offenen Dateiaufrufe.) Wenn Sie OS X verwenden, können Siewatch
MacPorts verwenden, da es standardmäßig nicht verfügbar ist.watch
in einem neuen Terminalfenster verwenden. Ich fand auch heraus, dass die Verwendungtail -n 2
nützlicher ist als-n 1
mitwget
, zumindest mit einemwatch
Intervall von 1 Sekunde, da sonst der letzte Prozentsatz möglicherweise nicht angezeigt wird. Dies ist kein Fehler in Ihrer Antwort, aber ich habe es erwähnt, wenn jemand anderes beschließt, die Nohup-Ausgabe von Wgets zu verfolgen.tail
Prozess wahrscheinlich nicht zu viel Overkill. aber als allgemeine Antwort ist dies gut zu berücksichtigen. Ich habe auch festgestellt, dasswatch -n 0.1
dies nicht funktioniert hat, aberwatch -n 0,1
funktioniert hat - möglicherweise werden Gebietsschemas angewendet, obwohl ich noch keine Gebietsschemas gesehen habe, die auf Terminalbefehlsoptionen angewendet wurden. Als Randnotiz:brew install watch
hat auch super funktioniert :-)watch
mit Ihren Gebietsschemaeinstellungen funktioniert0,1
oder0.1
davon abhängt (es wird das für Ihr Gebietsschema definierte Dezimalsymbol verwendet). Überprüfen SieLC_ALL=C watch -n 0.1 "date +%S.%N"
.Es gibt bestimmte Xterm-Steuersequenzen, mit denen Sie die Zeilen Ihres Terminals begrenzen können, die gescrollt werden. Suchen Sie nach "Bildlaufbereich festlegen". Es ist allerdings ein bisschen kludge. Stellen Sie sicher, dass Sie Ihr Terminal anschließend zurücksetzen:
quelle
tail -f
der Puffer immer noch gefüllt wird und das Terminal danach ohnehin zurückgesetzt werden muss. Dies ist nicht so inline wie ich gehofft hatte, aber sonst könnte es das sein, wonach ich gesucht habe.Wenn Sie nicht möchten, dass der Ausgang das gesamte aktuelle Terminalfenster belegt, können Sie eine einfache
while
Schleife verwenden:quelle
scrollTtyOutput
.