Używam ps
polecenia jako części ćwiczenia, aby zidentyfikować procesy działające dłużej niż określony próg.
Korzystam z następującego szablonu, aby uzyskać upływ czasu na polecenie znanego procesu:
ps -eo etime,command | grep <something to identify a process> | grep -v grep | awk '{print $1}'
Zauważam, że w przypadku procesów krótko działających wartość etime (czas, który upłynął) przyjmuje format minutes:seconds
i na podstawie tego mogę łatwo określić, jak długo proces był uruchomiony.
W przypadku bardzo długotrwałych procesów (dni) nie rozumiem formatu.
Mam proces serwera MySQL, który htop
pokazuje, że działa przez 126 godzin.
Wykonanie ps -eo etime,command | grep mysql | grep -v grep | awk '{print $1}'
daje mi wartość 9-03:35:32
.
Domyślam się, że oznacza to 9, 3 godziny, 35 minut, 32 sekundy. Nie mogę ustalić, jakie są jednostki dla 9.
Cały proces trwał 126 godzin, czyli około 5,25 dnia. Sugeruje to, że 9 w powyższym wyniku nie reprezentuje dni. Nie mogą też trwać pół dnia, ponieważ (9 * 12) godzin + 3 godziny + 35 minut + 32 sekundy to mniej niż 5 dni.
Jak interpretować upływający czas, który widzę w procesach długotrwałych? Jakie jednostki towarzyszą 9 w powyższej produkcji?
ps
wyświetla jedno lub drugie w zależności od opcji, które przekazujesz.etimes
zamiastetime
i porównaj wyniki.Odpowiedzi:
Zgodnie ze standardem :
Zatem 9 oznacza dni, niezależnie od tego, czy w to wierzysz, czy nie. Czy mógłbyś źle interpretować dane wyjściowe z htop? Co mówi top (który ma format czasu
minutes:seconds
)? Czy jesteś pewien, że pole, na które patrzysz w htopie, jest równoważne etime? (Na przykład, może to znaczy 126 minut z CPU czas?)źródło