Zacząłem pobierać duży plik w tle, używając
$ nohup wget http://example.tld/big.iso &
co daje mi również nohup.out
plik zawierający dane wyjściowe wget
.
Teraz, jeśli później chcę obejrzeć proces pobierania, mógłbym użyć, $ tail -f nohup.out
ale to wypełnia okno terminala szybciej, niż bym sobie tego życzył. To, co chciałbym zobaczyć, to ostatnia linia stale aktualizowana (tak jak w przypadku używania wget
samego).
Próbowałem, $ tail -n 1 -f nohup.out
ale wydaje się, że wpływa to tylko na początkowe dopasowanie.
Ogólnie rzecz biorąc, jeśli możliwe jest ograniczenie (w tym przypadku do 1) liczby linii dostępnych / widocznych na wyjściu polecenia, rozwiązałoby to problem. Tak jakby mieć wyjście w buforze cyklicznym - wystarczy pomyśleć o normalnym pasku postępu $ wget example.tld/big.iso
.
Czy istnieje takie rozwiązanie?
A może wspinam się na drzewo w niewłaściwy sposób? (Czy to znaczy, czy łatwiej byłoby ograniczyć nohup
wydajność lub zrobić coś innego?)
tail
co sekundę powstaje nowy proces, który może, ale nie musi, być czymś, na czym ci zależy. Pamiętaj też, aby podać przedział poniżej sekundy (np.watch -n 0.1
), Aby zasymulować „ciągłą aktualizację” części. (To oczywiście zwiększa także liczbę procesów i wywołuje otwarte pliki.) Wreszcie, jeśli używasz OS X, możesz uzyskaćwatch
z MacPorts, ponieważ nie jest on domyślnie dostępny.watch
w nowym oknie terminala. Dowiedziałem się również, że używanietail -n 2
jest bardziej przydatne niż-n 1
zwget
, przynajmniej wwatch
odstępie 1 sekundy, ponieważ w przeciwnym razie ostatni procent może nie być widoczny; nie jest to wada w twojej odpowiedzi, ale wspomniałem o tym, jeśli ktoś inny zdecyduje się obejrzeć wyjście wgets tailed nohup.tail
proces prawdopodobnie nie oznacza zbyt dużej nadmiaru; ale jako ogólną odpowiedź warto wziąć to pod uwagę. Zauważyłem również, żewatch -n 0.1
nie działało, alewatch -n 0,1
działało - mogą być zastosowane ustawienia narodowe, chociaż nie widziałem wcześniej ustawień narodowych stosowanych do opcji poleceń terminala. Na marginesie:brew install watch
działał również świetnie :-)watch
, czy będzie działać z ustawieniami regionalnymi0,1
lub0.1
zależy od nich (używa symbolu dziesiętnego zdefiniowanego dla ustawień regionalnych). SprawdzićLC_ALL=C watch -n 0.1 "date +%S.%N"
.Istnieją pewne sekwencje kontrolne Xterm, których można użyć do ograniczenia przewijania linii terminala. Poszukaj „Ustaw region przewijania”. Ale to trochę kłopot. Pamiętaj, aby zresetować terminal później:
źródło
tail -f
nadal wypełnia bufor, a także dlatego, że terminal i tak wymaga zresetowania. Nie jest to tak proste, jak się spodziewałem, ale w przeciwnym razie może być tym, czego szukałem.Jeśli nie chcesz, aby wyjście zajmowało całe bieżące okno terminala, możesz użyć prostej
while
pętli:źródło
scrollTtyOutput
(lub podobną) opcję.