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


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

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.


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.


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.


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


1
Z wyjątkiem systemów, które nie mają /proc. Innym sposobem na uzyskanie informacji jest sysctl (8) / sysctl (3).
Chris Page
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.