Wie bekomme ich die Befehlszeilenargumente, die an einen laufenden Prozess auf Unix / Linux-Systemen übergeben werden?
SunOS es ist pargs
Kommando gibt die Kommandozeilen-Argumente übergeben, um den Laufenden Prozess.
Ist es irgendeinen ähnlichen Befehl, der auf andere Unix-Umgebungen?
InformationsquelleAutor der Frage Hemant | 2009-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Optionen:
Gibt es mehr info in
/proc/<pid>
auf Linux, einfach nur einen Blick.Auf anderen Unices Dinge könnten anders sein. Die
ps
Befehl funktioniert überall, die/proc
Zeug ist OS-spezifisch. Zum Beispiel unter AIX gibt es keinecmdline
im/proc
.InformationsquelleAutor der Antwort markus_b
Wird dies den trick tun:
Ohne xargs, es werden keine Leerzeichen zwischen die Argumente, denn Sie haben umgewandelt worden, um NULs.
InformationsquelleAutor der Antwort Michael Böckling
Für Linux & Unix-System können Sie
ps -ef | grep process_name
um die komplette Befehlszeile,Auf einem SunOS system, wenn Sie möchten, um die vollständige Befehlszeile, die Sie verwenden können
/usr/ucb/ps -auxww | grep -i process_name
. Stellen Sie sicher, in SunOSto die vollständige Befehlszeile, die Sie benötigen, um super-user.pargs -a PROCESS_ID
. Dies gibt eine detaillierte Liste der übergebenen Argumente verarbeiten kann. Es wird geben dem array der Argumente in der Ausgabe wieargv[o]: erste argumen
argv[1]: zweite.. so auf..
Ich fand keine ähnlichen Befehl, aber ich würde geben folgenden Befehl aus, um eine put wie, dass
tr '\0' '\n' < /proc/<pid>/environ
auf Linux-Umgebung.InformationsquelleAutor der Antwort LOGAN
Auf Linux
erhalten Sie die Kommandozeile des Prozesses (einschließlich der Argumente), aber mit alle Leerzeichen geändert NUL-Zeichen.
InformationsquelleAutor der Antwort lothar
Können Sie
pgrep
mit-f
(volle Kommandozeile) und-l
(lange Beschreibung):Diese Methode hat einen entscheidenden Unterschied mit den anderen Antworten: es funktioniert auf CygWinso können Sie es verwenden, erhalten Sie die vollständige Befehlszeile eines jeden Prozesses, der unter Windows (ausführen als erhöhtewenn Sie wünschen, dass Daten über jede erhöhte/admin-Prozess). Eine andere Methode, dies zu tun, auf Windows ist mehr umständlich, beispielsweise.
Zudem: in meinen tests, die pgrep Weise wurde das einzige system, das war erhalten Sie den vollständigen Pfad für - Skripte, die innerhalb der CygWin - python -.
InformationsquelleAutor der Antwort Sopalajo de Arrierez
Andere Variante des drucken
/proc/PID/cmdline
mit Leerzeichen in Linux ist:In dieser Weise
cat
Drucke NULL-Zeichen als^@
und dann ersetzen Sie Sie durch ein Leerzeichen mitsed
;echo
druckt einen Zeilenumbruch.InformationsquelleAutor der Antwort Diego
Zusätzlich zu all den oben genannten Möglichkeiten, um den text zu konvertieren, wenn Sie verwenden einfach 'strings' ist, wird die Ausgabe auf separaten Zeilen standardmäßig. Mit dem Vorteil, dass es kann auch verhindern, dass irgendwelche chars, kann scramble Ihrem terminal angezeigt wird.
Sowohl die Ausgabe in einem einzigen Befehl:
strings /proc/cmdline /proc//environ
Die eigentliche Frage ist... gibt es eine Möglichkeit zu sehen, den echten Kommandozeile ein Prozess in Linux, die so verändert worden, dass die cmdline enthält die veränderten text und nicht der eigentliche Befehl, der ausgeführt wurde.
InformationsquelleAutor der Antwort Timothy J. Biggs
Auf Solaris
ähnliches kann verwendet werden, auf unix-ähnlichen Systemen.
InformationsquelleAutor der Antwort HuntM
Unter Linux mit bash, Ausgabe zitiert args, so können Sie den Befehl und wiederholen Sie es
Auf Solaris, mit bash (getestet mit 3.2.51(1)-release) und ohne gnu-userland:
Linux-bash-Beispiel (einfügen im terminal):
Ausgabe:
Solaris Bash Beispiel:
Ausgabe:
InformationsquelleAutor der Antwort Iwan Aucamp
Können Sie einfach:
InformationsquelleAutor der Antwort Mitar
Anstatt mehrere Befehle zum Bearbeiten der stream, nur mit ein - tr übersetzt einen Charakter zu einem anderen:
InformationsquelleAutor der Antwort Tom Evans
versuchen "ps -n" in einem linux-terminal. dies zeigt:
1.Alle LAUFENDEN Prozesse, deren Befehlszeile und Ihre PIDs
Danach wissen Sie, welcher Prozess zu töten
InformationsquelleAutor der Antwort repzero