Skip to main content
  1. Posts/
  2. blog.dsinf.net/

Komenda top i jej batch mode

·151 words·1 min
blog.dsinf.net bash linux
Daniel Skowroński
Author
Daniel Skowroński

Wśród czeluści parametrów topa można znaleść batch mode, który wg. man’a służy do zapisu do pliku: staje się nieinteraktywny i zrzuca całą swoją zawartość na standardowe wyjście do wystąpienia ^C lub konkretną ilość razy określaną przez parametr -n.
Gdyby chcieć zapisać dane deo zmiennej żeby móc wyciągnąć z nich dajmy na to obciążenie procesora wywołamy komedę:

top -bn 1

Ale naszym oczom nie ukaże się aktualne obciążenie procesora tylko średnie od rozruchu. Tak samo zachowuje się interaktywny top po starcie: najpierw wartość średnia i dopiero drugie odświeżenie to wartość właściwa.
Rozwiązanie problemu przychodzi po chwili zastanowienia. W kodzie parsera (np. Perlowym):

$top_raw=`top -bn 2`;
$top_pojedynczy = substr($top_raw, index($top_raw, "top - ", 1));

Ważny szczegół: index musi zaczynać od offset’u równego 1, gdyż inaczej natrafiłby na nagłówek topa w pozycji zerowej tym samym nic nie robiąc.

Niestety dodanie parametru delay (-d sekundy.dziesiąte_części) zaburza iteracje i wciąż wartością widzianą jest obciążenie średnie 🙁