Mehrere Prozesse mit dem gleichen Namen
Ich habe eine Anwendung, die auf Linux-2.6.13-und WindRiver Linux 3.0. In Linux 2.6.13, wenn ich...
ps -eaf | grep myapplication
...die Ausgabe zeigt mehrere Einträge für 'myapplication'.
Wenn ich den gleichen Befehl in WindRiver Linux 3.0, die Ausgabe zeigt nur einen Eintrag von 'myapplication'
Ist der Unterschied bezogen auf den Unterschied im OS verwendet? Bitte sagen Sie mir den Grund dafür?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist wahrscheinlich im Zusammenhang mit der threading-Bibliothek verwenden und/oder kernel-version.
Den alten (inzwischen sehr alten) "Linuxthreads" threading-Bibliothek, verwendet um zu zeigen, jeder thread ein "top-level" - Verfahren, das erscheinen würde direkt unter /proc und haben eine eindeutige PID. Dies war einer der vielen Nachteile, die behoben wurden, indem Sie:
Den neuen (jetzt nicht sehr neuen) "NPTL" threading-Bibliothek, die seit vielen Jahren jede neue distribution verwenden, kernel-Funktionen, um die Fäden werden unter der gleichen PID. Die Fäden sind immer noch da, aber nun unter einer "task" - Unterverzeichnis in /proc, so werden normalerweise ignoriert, die von "ps" (Sie kann noch sehen, wie Sie, wenn Sie wollen, mit einer entsprechenden option).
Beide Bibliotheken Implementierung der posix threads API (mehr-oder-weniger; neuere mehr tun, als die älteren). Ich erwarte, dass die Prozesse in Frage Multithread.
Ist es immer noch möglich zu sehen, dass Programme im Zusammenhang mit Linuxthreads, wenn Sie statisch gelinkt sind eine lange, lange Zeit. Aktuelle Kernel unterstützen diese just fine.
Vielleicht
grep myapplication
ist auch aufgeführt und das ist, warum gibt es mehrere Einträge. Wenn nicht, es hängt davon ab, was Ihre Anwendung tut, vielleicht nennt sich selbst usw. Sie benötigen mehr Informationen oder zumindestps -eaf | grep myapplication
Ausgabe.Unter Linux die Implementierung eines Threads ist nicht sehr Verschieden von einem vollständigen Prozess, siehe
man clone
. Ich vermute, Sie sind nur mit zwei verschiedenenps
Befehle mit einer anderen Voreinstellung.ps --help
wird zeigen, wie Sie die Liste in jedem thread von jedem Prozess.Kann man mit "ps -efm", um eine Liste der Prozesse und threads, die mit Ihnen verbunden sind. Einige Systeme zeigen threads mit dem gleichen Namen wie die ausführbare Datei. Dort sehen Sie die kernel-threads angezeigt werden, mit "[ ]".