Vollständigen Befehlsnamen von Prozessen mit hoher Speicherauslastung unter UNIX abrufen

Vollständigen Befehlsnamen von Prozessen mit hoher Speicherauslastung unter UNIX abrufen

Ich versuche, den Prozessnamen zu erfassen, der viel Speicher auf meiner Box verwendet. Ich habe den folgenden Befehl ausgeführt, um das zu erhalten

while [ 1 ]
do
   ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
   sleep 5
done

Das Problem besteht jedoch darin, dass mir nicht alle Befehlsdetails angezeigt werden, die gegen die PID ausgeführt werden. Die Ausgabe, die ich erhalte, ist wie folgt:

PID  PPID CMD                            %MEM     %CPU
916 915 /usr/bin/perl /release/data/ 11.9  0.2
831 830 /usr/bin/perl -w /release/da  6.5  0.0
608 607 /etc/alternatives/java_sdk_  2.4  1.2
135 134 /etc/alternatives/java_sdk_  1.4  1.6

Ich möchte den vollständigen Befehl des PID erfassen.

Antwort1

Ich nehme an, mit „vollständigen Befehlsdetails“ meinen Sie einschließlich der Argumentenliste? Wenn ja, versuchen Sie das Folgende. Es gibt Ihnen eine Breite von bis zu 100 Zeichen für die CMD-Spalte. Sie können sie nach Bedarf anpassen.

ps -eo pid,ppid,cmd:100,%mem,%cpu --sort=-%mem | head

Antwort2

Sie können jederzeit dieSpitzeBefehl mit Schaltern zum Manipulieren der Ausgabe:

top -b -c -n 1 -o +%MEM | sed -n '7,17p'

verwandte Informationen