Если мы наберем ps -ef, мы получим список процессов. Почему числа PID не являются непрерывными?
Идентификаторы процессов, отсутствующие между ними, уже мертвы, и их PID будут повторно использоваться ядром в последующих процессах.
Мертвые процессы не будут отображаться в таблице процессов (за исключением зомби), поэтому ps -ef не покажет их.
Обычно PID является непрерывным, но какой-то процесс будет мертв только к моменту запуска команды ps -ef.
Также некоторые процессы могут быть просто подпроцессом другого процесса, который не показан в [ f5]. Чтобы увидеть расширенный результат, и вы можете проверить непрерывный PID, используйте pstree
pstree -p
Пример вывода:
├─teamviewerd(3468)─┬─{teamviewerd}(3474)
│ ├─{teamviewerd}(3475)
│ ├─{teamviewerd}(3476)
│ ├─{teamviewerd}(3477)
│ ├─{teamviewerd}(3478)
, а если вы запустите ps -ef, вы просто увидите родительский процесс.
$ ps -ef | grep teamviewerd
root 3468 1 0 Jul15 ? 00:07:38 /opt/teamviewer9/tv_bin/teamviewerd -f
Они непрерывны. PID назначаются последовательно, пока не будет достигнут максимальный предел. После этого предела он начнет снова с нуля.
Так просто, что недостающие PID в ps -ef имеют мертвые процессы. Обратите внимание, что в ps -ef перечислены только запущенные процессы.