Ich suche den in Linux gestarteten Prozess mit der Prozess-ID 0. Ich kenne init
hat PID 1 , was der erste Prozess in Linux ist, gibt es einen Prozess mit PID 0?
Akzeptierte Antwort:
Von der Wikipedia-Seite mit dem Titel:Prozesskennung:
Es gibt zwei Tasks mit speziell gekennzeichneten Prozess-IDs:swapper oder Sched hat die Prozess-ID 0 und ist für das Paging verantwortlich und ist
eher Teil des Kernels als ein normaler Prozess im Benutzermodus.
Prozess-ID 1 ist normalerweise der Init-Prozess, der hauptsächlich für das Starten
verantwortlich ist und Herunterfahren des Systems. Ursprünglich war die Prozess-ID 1
durch keinerlei technische Maßnahmen speziell für init reserviert:Sie hatte diese ID
einfach als natürliche Folge davon, dass sie der erste Prozess
war, der vom Kernel aufgerufen wurde. Neuere Unix-Systeme haben typischerweise
zusätzliche Kernel-Komponenten, die als „Prozesse“ sichtbar sind, in diesem Fall wird PID
1 aktiv für den Init-Prozess reserviert, um die Konsistenz
mit älteren Systemen aufrechtzuerhalten.
Sie können den Beweis dafür sehen, wenn Sie sich die übergeordneten PIDs (PPID) von init
ansehen und kthreadd
:
$ ps -eaf
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jun24 ? 00:00:02 /sbin/init
root 2 0 0 Jun24 ? 00:00:00 [kthreadd]
kthreadd
ist der Kernel-Thread-Daemon. Alle kThreads werden von diesem Thread gegabelt. Sie können Beweise dafür sehen, wenn Sie sich andere Prozesse ansehen, die ps
verwenden und zu sehen, wer ihre PPID ist:
$ ps -eaf
root 3 2 0 Jun24 ? 00:00:57 [ksoftirqd/0]
root 4 2 0 Jun24 ? 00:01:19 [migration/0]
root 5 2 0 Jun24 ? 00:00:00 [watchdog/0]
root 15 2 0 Jun24 ? 00:01:28 [events/0]
root 19 2 0 Jun24 ? 00:00:00 [cpuset]
root 20 2 0 Jun24 ? 00:00:00 [khelper]
Beachten Sie, dass sie alle 2
sind .