[solved] Bash – jak uruchomić polecenie 'top' poleceniem 'echo'?

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

[solved] Bash – jak uruchomić polecenie 'top' poleceniem 'echo'?

Post autor: Mały 1 »

Witam!

Mam taki problem. Chciałbym uruchomić poleceniem echo polecenie top.

Kod: Zaznacz cały

echo $(top)

pic@nk:~$ echo $(top)
|
Jak widać wynik polecenia top nie jest wyświetlany mino, że kursor przechodzi do kolejnego wiersza.

Natomiast w przypadku wpisania:

Kod: Zaznacz cały

echo $(iwconfig)

Kod: Zaznacz cały

pic@nk:~$ echo $(iwconfig)
lo        no wireless extensions.

eth1      no wireless extensions.

vmnet1    no wireless extensions.

vmnet8    no wireless extensions.

wlan0 IEEE 802.11bg 
pic@nk:~$ 
Wynik jest wyświetlany. W związku z tym mam pytanie.

Jak uruchomić polecenie 'top' poleceniem 'echo'?

Dziękuje za informacje.
Ostatnio zmieniony 12 sty 2012, 13:24 przez Mały 1, łącznie zmieniany 1 raz.
pioruns
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1172
Rejestracja: 19 lis 2006, 21:28
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64

Re: Bash – jak uruchomić polecenie 'top' poleceniem 'echo'?

Post autor: pioruns »

Dzieje się tak dlatego, że polecenie top nie wyświetla paru linijek i kończy pracy tak jak iwconfig, tylko odświeża ekran, aż nie przerwiesz go klawiszem.
Wpisz

Kod: Zaznacz cały

top -n 1
aby wydrukować dane jeden raz i przerwać program.
Registered Linux user #454644 ---> https://linuxcounter.net/
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: Bash – jak uruchomić polecenie 'top' poleceniem 'echo'?

Post autor: Mały 1 »

W takim razie zapytam inaczej.

W jaki sposób z top mogę na bieżąco pobierać tylko jedną wartość, czyli całkowite użycie procesora?

Kod: Zaznacz cały

pic@nk:~/Pulpit/top$ top | grep Cpu
Cpu(s):  5.9%us,  6.2%sy,  0.0%ni, 86.5%id,  1.3%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu(s):  3.5%us,  8.2%sy,  0.0%ni, 88.1%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Cpu(s):  3.9%us,  7.7%sy,  0.0%ni, 87.8%id,  0.6%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu(s):  2.7%us,  5.7%sy,  0.0%ni, 91.5%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu(s):  2.9%us,  4.8%sy,  0.0%ni, 92.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

pic@nk:~/Pulpit/top$ 
Jeżeli w pętli będę co chwile wykonywał 'top -n 1' > plik.txt, a następnie z pliku.txt wyświetlał całkowite użycie procesora np. 5.9%us, to wynik ten będzie opóźniony w czasie.

Może lepiej pobierać całkowite użycie procesora z innego miejsca np. z monitora systemu?

Dziękuje za informacje.
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: Bash – jak uruchomić polecenie 'top' poleceniem 'echo'?

Post autor: leon1313 »

zaistaluj sysstat, atsar
potem masz dostępne polecenia:

Kod: Zaznacz cały

iostat -c

Kod: Zaznacz cały

vmstat 1
(po jakimś czasie jak zbierze dane)
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Bash – jak uruchomić polecenie 'top' poleceniem 'echo'?

Post autor: ethanak »

Zobacz sobie na informacje w /proc/stat. Wyjaśnienie znaczenia:

Kod: Zaznacz cały

man proc
Poza tym co znaczy "opóźnione w czasie"? O ile? Mikrosekundę? Milisekundę? Aż taka dokładność Ci potrzebna?
A przecież chwilowe użycie procesora to albo 1 (procesor jest używany) albo 0 (procesor nie jest używany), a te magiczne cyferki w "top" to średni stan z jakiegoś tam okresu.
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: Bash – jak uruchomić polecenie 'top' poleceniem 'echo'?

Post autor: Mały 1 »

Dziękuje za dotychczasowe informacje.

Zdecyduję się na obliczanie czasu wykorzystania procesora na podstawie informacji zawartych w:

Kod: Zaznacz cały

/proc/stat
W tym celu zapisałem przykładową zawartość pliku /proc/stat, która wygląda tak:

Kod: Zaznacz cały

cpu  29170 0 18919 353297 3745 0 236 0 0 0
cpu0 14908 0 10438 172929 426 0 204 0 0 0
cpu1 14262 0 8481 180368 3319 0 32 0 0 0
intr 944634 26 96 0 0 0 0 0 1 0 1 0 0 113435 0 9926 0 1506 0 27461 0 0 60153 12349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 1556413
btime 1326188874
processes 9813
procs_running 6
procs_blocked 0
softirq 459933 0 155213 257 20331 13369 0 60231 49667 62 160803
O

Kod: Zaznacz cały

/proc/stat 
przeczytałem taką informacje (http://man.cx/proc(5)/pl):

Kod: Zaznacz cały

statystyki jądra/systemu. Różnią się pomiędzy architekturami. Wśród wspólnych wpisów są: 
 cpu 3357 0 4313 1362393

Ilość czasu, wyrażona w USER_HZ (jedna setna sekundy na większości architektur), które system spędził w trybie użytkownika, trybie użytkownika o obniżonym priorytecie (nice), trybie systemowym i w zadaniu idle. Ostatnia wartość powinna być równa iloczynowi wartości USER_HZ z drugim wpisem w pseudopliku uptime.

W Linuksie 2.6 linia ta zawiera trzy dodatkowe kolumny:iowait − czas oczekiwania na zakończenie operacji I/O (od wersji 2.5.41); irq − czas obsługiwania przerwań (od 2.6.0−test4); softirq − cxzas obsługiwania miękkich przerwań (softirqs) (od 2.6.0−test4).
Teraz mam pytania:

1. Czy dobrze oznaczyłem wpisy w moim pliku (niebieska czcionka)?
cpu 29170(us) 0(ni) 18919(sy) 353297(id) 3745 0 236 0 0 0
2. O czym mówią pozostałe nieoznaczone wartości (0 3745 0 236 0 0 0) ?

3. Która wartość w powyższym pliku oznacza "total" time cpu?
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Bash – jak uruchomić polecenie 'top' poleceniem 'echo'?

Post autor: ethanak »

1) na oko tak
2) jeśli tego nie ma w manie, to ja bym na tych cyferkach nie polegał. Zawsze można sprawdzić w źródłach kernela ale szczerze mówiąc znam ciekawsze lektury (Ty pewnie też) :)
3) zdefiniuj "total". Czy to us+ni+sy czy us+ni+sy+id?

Przy ukazji USER_HZ to niekoniecznie 1/100 sekundy, traktuj te cyferki po prostu jako "ilość jednostek czasu" bez wnikania jaka to jednostka
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Re: Bash – jak uruchomić polecenie 'top' poleceniem 'echo'?

Post autor: beluosus »

http://colby.id.au/node/39 - ten skrypt chyba wyczerpuje temat.
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: Bash – jak uruchomić polecenie 'top' poleceniem 'echo'?

Post autor: Mały 1 »

Zgadza się powyższy skrypt wszystko wyjaśnił. Dziękuje wszystkim za pomoc.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości