Jak sprawdzić, jak długo proces trwał po jego zakończeniu?


14

Obecnie używam następujących, aby sprawdzić, jak długo proces faktycznie działa:

ps -eo uid,pid,etime | egrep '^ *MY_ID' | egrep 'PID_OF_PROCESS'

I to daje następujące wyniki:

MY_ID PID_OF_PROCESS       00:16

Jednak po zakończeniu procesu chcę dowiedzieć się, jak długo to trwało, ale nie mogę znaleźć tej informacji.

Odpowiedzi:


15

Nie sądzę, aby można było uzyskać takie informacje po zakończeniu procesu.

Jeśli wiesz wcześniej, że będziesz potrzebować tych informacji, możesz uruchomić polecenie jako

time <command>

na przykład

~> time sleep 1

real        0m1.003s
user        0m0.002s
sys         0m0.001s

7

Sprawdź, czy Twój wariant unix obsługuje rozliczanie procesów . Na przykład w systemie Ubuntu (i większości innych dystrybucji Linuksa) zapewnia to acctpakiet Install acct http://bit.ly/software-small . Jeśli podsystem rozliczania jest uruchomiony, lastcommwyświetla informacje o zakończonych procesach, w tym o tym, ile czasu procesora wykorzystały (czas zegara ściennego nie jest rejestrowany).

Jeśli potrzebujesz pomiaru czasu dla określonego programu, uruchom gotime .

Jeśli potrzebujesz dokładniejszych informacji, skorzystaj z bardziej zaawansowanego pakietu kontroli, na przykład podsystemu kontroli w systemie Linux.


Ta odpowiedź straciła obraz.
mattdm

@mattdm Och, to link, który był standardem w Ask Ubuntu do łączenia się z apt.ubuntu.com, a następnie obraz został usunięty z imgur. Musiałem używać go setki razy w SE i nie podoba mi się perspektywa ich edycji. Nadal czekam, aż SE wykona automatyczną wymianę, czego nie zrobią, ponieważ nawet nie zrobili tego, gdy cała dokumentacja Java została przeniesiona.
Gilles 'SO - przestań być zły'

1

Zanim zobaczyłem te pytania i odpowiedzi, napisałem krótki skrypt. Jest to nadal przydatne, jeśli nie masz uprawnień roota, a acct nie jest zainstalowany lub nie wywołujesz polecenia bezpośrednio (w moim przypadku: używam GUI do konfiguracji procesów w tle). Musisz uzyskać PID przed uruchomieniem (ktoś zainteresowany dodaniem go do skryptu? :)

#!/bin/bash

echo "Checking run time"
read -p "What is the pid? " PID

while true; do
    # sleep needed! used to reduce cpu usage and mass of output
    sleep 5
    ps -eo uid,pid,etime | egrep '$PID' | egrep '$UID'
done

Dzięki temu znajdź PID PROCESS_NAME

ps aux | awk 'NR == 1 || /PROCESS_NAME/'

Właściwie próbowałem połączyć USER-ID i PID, aby skrypt był niejednoznaczny, ale nie jest to takie łatwe ... ps -eo uid,pid,etime | egrep '$UID[[:space:]]$PID'nie zawsze działa ...


Dokładnie to, czego potrzebowałem! Odkryłem, że w Centos 6.8 musiałem pominąć cytaty wokół „$ PID” i pominąć, egrep '$UID'ponieważ jestem jedynym użytkownikiem takim:ps -eo uid,pid,etime | egrep $PID
Chris Adams
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.