2

トップからプロセスのCPU使用率を見つけようとしています。その前に、以下のコマンドをテストする必要がありました

top -b -c -d1 -n2

-c オプションを使用しないとプロセス名が切り捨てられるため、完全なコマンド名を出力するために -c オプションを使用しています。
いいえ、これをnohup sh test.sh &として実行すると、出力 nohup.out には切り捨てられたプロセス名が含まれているため、プロセス名を grep できません

159 neutron   30   0  127620  22765   5479 S   0.0  0.6 399:02.56 /usr/bin/p+t

しかし、これを sh test.sh として実行すると、完全なコマンド名が端末に出力されます。
top コマンドのバッチ モードで -c を使用しているにもかかわらず、完全なコマンド名が出力されないのはなぜですか?

-c が有効なコマンド名とプロセス名の違いは何ですか?

または、プロセス名とコマンド名が異なり、プロセス名は ps や top などのコマンドによって /proc/pid/status から取得されますか?

4

1 に答える 1

4

top コマンドの前に COLUMNS 環境変数を設定して、使用可能な幅を増やすことができます。

COLUMNS=1000 top -b -c -d1 -n2

もう 1 つの方法は、ps を使用してプロセスの pid を名前で検索し、ps 出力の形式を指定することです。この出力を使用して top にフィードし、pid に基づいてプロセスの CPU 使用率を取得できます。

ps -eo pid,comms,args

comms = 引数ではなくコマンド名のみ
args = プロセスの起動に使用される完全な引数リスト

于 2015-12-13T10:55:05.417 に答える