Jeśli piszemy ps -ef
, otrzymujemy listę procesów. Dlaczego liczby PID nie są ciągłe?
Jeśli piszemy ps -ef
, otrzymujemy listę procesów. Dlaczego liczby PID nie są ciągłe?
Odpowiedzi:
W Ubuntu są one ciągłe. W innych systemach operacyjnych może się różnić.
Jądro przydziela PID w zakresie (RESERVED_PIDS, PID_MAX_DEFAULT). Robi to sekwencyjnie w każdej przestrzeni nazw (zadania w różnych przestrzeniach nazw mogą mieć takie same identyfikatory). W przypadku wyczerpania zasięgu przypisanie pid otacza się.
( /programming/3446727/how-does-linux-determine-the-next-pid )
Pamiętaj jednak ...
Niektóre tematy dotyczące przepływu stosu:
W komentarzach znajduje się polecenie przetestowania przypisania PID:
for i in {1..20}; do sh -c 'echo $$'; done
Zwykle PID jest ciągły, ale niektóre procesy zostaną przerwane do momentu uruchomienia polecenia ps -ef
.
Również niektóre procesy mogą być tylko podprocesami innego procesu, który nie jest pokazany w ps -ef
poleceniu. Aby zobaczyć rozszerzony wynik i sprawdzić ciągły PID, użyjpstree
pstree -p
Przykładowe dane wyjściowe:
├─teamviewerd(3468)─┬─{teamviewerd}(3474)
│ ├─{teamviewerd}(3475)
│ ├─{teamviewerd}(3476)
│ ├─{teamviewerd}(3477)
│ ├─{teamviewerd}(3478)
podczas gdy po uruchomieniu ps -ef
zobaczysz tylko proces nadrzędny.
$ ps -ef | grep teamviewerd
root 3468 1 0 Jul15 ? 00:07:38 /opt/teamviewer9/tv_bin/teamviewerd -f