UNIX でメモリ使用量の多いプロセスの完全なコマンド名を取得する

UNIX でメモリ使用量の多いプロセスの完全なコマンド名を取得する

私は自分のボックスでメモリを大量に使用しているプロセス名を取得しようとしています。それを取得するには以下のコマンドを実行しました。

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

しかし、問題は、PID に対して実行されている完全なコマンドの詳細が提供されないことです。私が取得する出力は次のようになります。

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

PID の完全なコマンドをキャプチャしたいです。

答え1

「完全なコマンドの詳細」とは、引数リストも含めるという意味だと思います。そうであれば、以下を試してください。CMD 列の幅は最大 100 文字になります。必要に応じて調整できます。

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

答え2

いつでも出力を操作するためのスイッチ付きのコマンド:

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

関連情報