Jak napisać skrypt powłoki, który pokazuje wyniki w czasie rzeczywistym?
Coś w rodzaju top
polecenia, które aktualizuje wyniki po ustalonych odstępach czasu.
Jak napisać skrypt powłoki, który pokazuje wyniki w czasie rzeczywistym?
Coś w rodzaju top
polecenia, które aktualizuje wyniki po ustalonych odstępach czasu.
curses
interfejsu ... ale myślę, że jest to bardziej problem programistyczny i należy do SOOdpowiedzi:
Byłoby to pomocne, gdybyś był bardziej szczegółowy w tym, co próbujesz zrobić.
Oto niezwykle uproszczony przykład:
źródło
możesz użyć komendy watch (1), aby uruchamiać skrypt w regularnych odstępach czasu:
Będzie to działać
myscript.sh
co 1 sekundę, czyszcząc ekran między każdym biegiem i ze znacznikiem czasu w rogu. Możesz użyć tej-d
opcji, a nawet podkreśli różnice w wydajności na przebieg.źródło
watch
. Możesz być bardziej dokładny? Jaki system operacyjnyWię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.
źródło
Emm, jeśli patrzysz na
top
dane 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.
źródło
top
używa Curses i odczytuje/proc
system plikówźródło
/proc
. Innym sposobem na uzyskanie informacji jest sysctl (8) / sysctl (3).