Jak wyświetlić wyniki na żywo na terminalu ze skryptu powłoki?

9

Jak napisać skrypt powłoki, który pokazuje wyniki w czasie rzeczywistym?

Coś w rodzaju toppolecenia, które aktualizuje wyniki po ustalonych odstępach czasu.

alternatywny tekst

Lazer
źródło
6
prawdopodobnie używa cursesinterfejsu ... ale myślę, że jest to bardziej problem programistyczny i należy do SO
xenoterracide

Odpowiedzi:

7

Byłoby to pomocne, gdybyś był bardziej szczegółowy w tym, co próbujesz zrobić.

Oto niezwykle uproszczony przykład:

while true
do
    clear
    date
    sleep 1
done
Wstrzymano do odwołania.
źródło
13

możesz użyć komendy watch (1), aby uruchamiać skrypt w regularnych odstępach czasu:

watch -n 1 myscript.sh

Będzie to działać myscript.shco 1 sekundę, czyszcząc ekran między każdym biegiem i ze znacznikiem czasu w rogu. Możesz użyć tej -dopcji, a nawet podkreśli różnice w wydajności na przebieg.

joshperry
źródło
Właśnie myślałem o tym, jak odpowiedzieć za pomocą zegarka.
Kevin M,
Nie mam watch. Możesz być bardziej dokładny? Jaki system operacyjny
Chris Page
2

Większość tych danych jest na ogół ujawniana w operacjach podstawowych wirtualnego systemu plików / proc. Każdy proces ma wpis w / proc w katalogu o nazwie PID. Więc / proc / 5437 miałby prymitywy dla procesu 5437. Czytanie tam prymitywów i odpowiednie parsowanie zbliżyłoby się do tego, co robi top.

Top faktycznie działa, wywołując określone wywołania funkcji, które wydobywają te informacje bezpośrednio z jądra, zamiast wyciągać je z plików. Aby zrobić to samo z bash, musisz pobrać go z wirtualnego systemu plików / proc lub wypakować go z innych wywołań, takich jak ps.

Co do czasu rzeczywistego, nie jest to wykonalne na poziomie szczegółowości, jaki zapewnia top. Możesz pokroić czas wystarczająco dobrze, aby wyglądał na czas rzeczywisty, ale nadal będziesz otrzymywać odcinki czasu.

sysadmin1138
źródło
2

Emm, jeśli patrzysz na topdane wyjściowe przez dłuższy czas, a nie tylko po to, aby sprawdzić, czy program działa dobrze, sugeruję użycie htop .

Daje ci wiele informacji w czasie rzeczywistym i jest łatwiejszy do kontrolowania i zarządzania.

Możesz zmienić układ danych wyjściowych, takich jak wykresy słupkowe i kolumny.

polemon
źródło
Sądzę, że pyta, jak napisać aplikację, która sonduje w regularnych odstępach czasu, a nie konkretnie top lub htop.
Chris
1

topużywa Curses i odczytuje /procsystem plików

Rekurencja
źródło
1
Z wyjątkiem systemów, które nie mają /proc. Innym sposobem na uzyskanie informacji jest sysctl (8) / sysctl (3).
Chris Page