Prozessname von seiner PID in Linux

Lesezeit: 3 Minuten

Wie bekomme ich einen Prozessnamen von seiner PID? Zum Beispiel führe ich cat file1.txt aus, aber ich möchte diesen cat-Befehl und seine Argumente herausfinden, da seine PID im System vorhanden ist. Gibt es eine Struktur, um es zu bestimmen oder ähnliches? Irgendeine Idee?

  • mögliches Duplikat von Get process name by PID

    – Hasturkun

    21. März 2013 um 11:01 Uhr

Es gibt keinen allgemeinen Weg, dies unter Unix zu tun.
Jedes Betriebssystem hat unterschiedliche Möglichkeiten, damit umzugehen, und einige sind sehr schwierig. Sie erwähnen jedoch Linux. Bei Linux befinden sich die Informationen im /proc-Dateisystem.
Lesen Sie die Datei, um die Befehlszeile für die Prozess-ID 9999 abzurufen /proc/9999/cmdline.

  • Und um den Prozessnamen für die Prozess-ID 9999 zu erhalten, lesen Sie die Datei /proc/9999/comm.

    – Skippy le Grand Gourou

    5. Juli 2013 um 15:02 Uhr

  • Die Frage war, wie man den Prozessnamen erhält, nicht die Befehlszeile. Auf meinem SUSE gebe ich ‘head /proc/9999/cmdline’ für einen kwrite-Prozess ein und er gibt zurück: ‘kdeinit4: kwrite [kdeinit]’. Wenn ich /comm anstelle von /cmdline verwende, erhalte ich das richtige Ergebnis: ‘kwrite’.

    – Elmue

    21. April 2015 um 11:01 Uhr

  • /proc/$pid/comm schneidet die Ausgabe auf 15 Zeichen, wie es scheint. Das ist sehr … sehr schlecht …

    – Gläubiger

    1. Juni 2021 um 3:58 Uhr


Unter Linux kannst du reinschauen /proc/. Versuchen Sie es mit der Eingabe man proc für mehr Informationen. Die Inhalte von /proc/$PID/cmdline gibt Ihnen die Befehlszeile diesen Prozess $PID mit gefahren wurde. Es gibt auch /proc/self zum selbst testen 🙂

Eine Alternative (zB unter Mac OS X) ist zu verwenden libproc. Sehen libproc.h.

  • Können Sie mir bitte den Unterschied zwischen Ihrer und meiner Antwort sagen? 🙂

    – Anubhab

    21. März 2013 um 11:02 Uhr

  • Deine Antwort war nicht da, als ich anfing, meine zu schreiben 🙂

    – robbie_c

    21. März 2013 um 11:02 Uhr

POSIX C unterstützt KEINE Standard-API zum Abrufen des Prozessnamens nach PID.

Unter Linux können Sie den Namen über die LINUX Proc API erhalten: /proc/$PID/cmdline. Und der Code sieht so aus:

const char* get_process_name_by_pid(const int pid)
{
    char* name = (char*)calloc(1024,sizeof(char));
    if(name){
        sprintf(name, "/proc/%d/cmdline",pid);
        FILE* f = fopen(name,"r");
        if(f){
            size_t size;
            size = fread(name, sizeof(char), 1024, f);
            if(size>0){
                if('\n'==name[size-1])
                    name[size-1]='\0';
            }
            fclose(f);
        }
    }
    return name;
}

  • Und wenn Sie hierher gekommen sind, um nach einer Lösung in C# zu suchen, die mit Mono funktioniert, dann schauen Sie sich diese an: stackoverflow.com/questions/29827331/…

    – Elmue

    23. April 2015 um 15:32 Uhr

Um den Prozessnamen einer Prozess-ID zu erhalten, sagen wir 9000, verwenden Sie diesen Befehl:

ps -p 9000 -o comm=

Benutzer-Avatar
toddwz

Während diese Frage beantwortet wurde, möchte ich meine 2 Cent hinzufügen.

In meinem Fall beim Prozess 1111 Prozess erstellt 22222 über pipe (zumindest habe ich das gehört), /proc/2222/cmdline gibt keinen korrekten Prozessnamen an, sondern etwas wie 1111_1. Ich muss benutzen /proc/2222/comm um den korrekten Prozessnamen zu erhalten.

Benutzer-Avatar
Paul Roub

Verwenden Sie den folgenden Befehl unter Linux

ls -l /proc/[pid]/exe

Es gibt den Namen des Prozesses/der Anwendung an

Benutzer-Avatar
inihsrah

ps --pid <pid> -o comm h : Dieser Befehl gibt den Namen der ausführbaren Datei an. Wenn Sie beispielsweise ein Skript name.sh ausführen, gibt der obige Befehl die Ausgabe als aus bash

ps --ppid <pid> -o comm h: Dieser Befehl gibt die Ausgabe als aus name

1383720cookie-checkProzessname von seiner PID in Linux

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy