Gibt es eine Möglichkeit, eine vollständige Prozessauflistung in Solaris ohne abgeschnittene Linien zu generieren? Ich habe den ps
Befehl mit den folgenden Argumenten ausprobiert :
-f Erzeugt eine vollständige Liste. (Siehe unten für Bedeutung von Spalten in einer vollständigen Liste ing.)
-l Erzeugt eine lange Liste. (Siehe unten.)
Also, diese beiden scheinen zu tun, was ich will, aber weiter unten in der ps-Manpage finde ich Folgendes:
args Der Befehl mit all seinen Argumenten als Zeichenfolge. Die Implementierung wird möglicherweise abgeschnitten dieser Wert auf die Feldbreite; es ist implementierungsabhängig, ob überhaupt weitere Kürzung erfolgt. Es ist nicht angegeben, ob die Zeichenfolge dargestellt ist eine Version des Arguments Liste, wie es an den Befehl übergeben wurde wenn es gestartet wurde, oder eine Version von Argumente, wie sie möglicherweise geändert wurden von der Anwendung. Anwendungen können nicht davon abhängen zu können, ihre Argumentliste und mit dieser Änderung spiegelt sich in der Ausgabe von ps wider. Die Solaris-Implementierung begrenzt die Zeichenfolge bis 80 Byte; Die Zeichenfolge ist die Version der Argumentliste wie sie war wird beim Start an den Befehl übergeben.
Was im Grunde bedeutet, dass die Ausgabe abgeschnitten wird und ich nichts dagegen tun kann. Also komme ich her. Sicherlich sind andere Menschen auf dieses Problem gestoßen und haben vielleicht sogar einen Weg, es zu umgehen. Ich vermute, ps kann das nicht und ich muss andere Tools verwenden, um das zu tun. Ist das richtig?
ps
Befehl? Wenn ja, aktualisieren Sie die Frage bitte, damit sie klarer wird.Antworten:
du könntest es versuchen
Dies gibt Ihnen eine Liste aller Argumente
oder verwenden Sie eine andere ps. Wenn als root ausgeführt (oder ein beliebiger Benutzer mit ausreichenden Rechten für diese Angelegenheit)
wird Ihnen alle Argumente geben. Sein Teil von SUNWscpu, "Source Compatibility, (Usr)"
quelle
pargs
Zeigt die In-Process-Kopie der Befehlszeilenargumente (und optional der Umgebung) an. Gut zu wissen, danke!Der Kernel muss nicht die Befehlszeilenargumente verfolgen. Wenn ein Programm über den
execve
Aufruf gestartet wird , muss der Kernel die Argumente in den Prozessspeicher kopieren (damit sieargv
z. B. in einem C-Programm verfügbar sind ). Danach kann der Kernel den Speicher verwerfen, der zum Speichern der ursprünglichen Befehlszeilenargumente verwendet wird. Der Prozess darf seine Kopie der Argumente überschreiben. Von den Argumenten ist also möglicherweise einfach keine Spur zu sehen.Einige Unix-Varianten behalten eine Kopie der Argumente in irgendeiner Form. Solaris macht einige Daten in verfügbar
/proc/$pid
. Ab OpenSolaris 2009.06 befinden sich die Argumente nur in einer Ablaufverfolgung/proc/$pid/psinfo
, in der sie mit Leerzeichen dazwischen verkettet sind (Sie können also nicht zwischenfoo "one" "two"
und unterscheidenfoo "one two"
) und die resultierende Zeichenfolge auf 80 Byte gekürzt wird. Dieses Feld in/proc/$pid/psinfo
gibt an, wasps
in derargs
Spalte gedruckt wird.Übrigens steuern die Optionen
-f
und-l
, welche Felder gedruckt werden, und nicht, ob die Felder auf eine bestimmte Breite gekürzt werden.quelle
ps -e
gibt die Liste aller laufenden Prozesse an. Auch da ist dasps -elf
.quelle
Abhängig davon, welchen
ps
Befehl Sie verwenden, verwende ichquelle
prstat
Sie erhalten die aktuell ausgeführten Prozesse mit ihren Pids und der CPU-Auslastung.quelle