GNU/Linux >> Linux の 問題 >  >> Linux

LinuxコマンドラインでCPU使用率を取得するために利用できる方法は何ですか?

他の人が言ったように、最善の方法はおそらく top です .少し調整と解析が必要ですが、現在の CPU 使用率をパーセンテージで表示することができます。

top ユーザー、システムプロセス、および nice の間で CPU 使用率を分割します 3 つのプロセスの合計が必要です。したがって、top を実行できます。 bで 出力を解析できる atch モード。ただし、ここで説明したように、top -b の 1 回目の繰り返し ブート以降のパーセンテージを返すため、少なくとも 2 回の反復が必要です (-n 2 ) を使用して、現在のパーセンテージを取得します。スピードアップするには、 d を設定できます 0.01 までの反復間の遅延 .最後に、あなたは grep CPU パーセンテージを含む行に gawk を使用します ユーザー、システム、および適切なプロセスを合計するには:

    top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
        -----  ------   -----------    ---------   ----------------------
          |      |           |             |             |------> add the values
          |      |           |             |--> keep only the 2nd iteration
          |      |           |----------------> keep only the CPU use lines
          |      |----------------------------> set the delay between runs
          |-----------------------------------> run twice in batch mode

この情報は ps -o pcpu ax でも取得できると思いました 実行中の各プロセスの %use を追加します。残念ながら、ここで説明したように、ps 「プロセスの存続期間全体で実行に費やされた時間の割合を返します」これは必要なものではありません。

編集

あなたのコメントに基づいて、あなたのバージョンの top は私のものとは異なり、代わりにこれを使用する必要があります:

top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

また、ローカリゼーションの問題を回避するために、ロケールを C:に設定してください。

LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

sar それを行うための決定的な方法です。例えば ​​sar -u 次のように出力されます:

08:30:01 AM       CPU     %user     %nice   %system   %iowait     %idle
08:40:01 AM       all      6.94      0.00      1.77      4.92     86.36
08:50:01 AM       all      5.73      0.00      2.31     12.72     79.24
09:00:01 AM       all      5.95      0.00      2.58     18.36     73.11
09:10:01 AM       all      6.88      0.00      2.22     17.44     73.45
09:20:01 AM       all      8.61      0.00      2.68     27.93     60.78

どの Linux を使用しているかはわかりませんが、CentOS/RedHat の場合は sysstat をインストールする必要があります パッケージであり、Debian/Ubuntu でも同じだと思います。

sar を使用して統計を収集することもできます アドホック :

sar -o /tmp/sar.out 60 600

統計を 60 秒ごとに 600 回、つまり 600 分収集します。


Linux
  1. Linuxコマンドラインに関する8つのヒント

  2. GNUParallelを使用してLinuxコマンドラインでより多くのことを行う

  3. お気に入りのコマンドライン機能またはトリックは何ですか?

  1. Linuxコマンドラインでパスワードを生成する

  2. Linuxコマンドラインでビデオのフレーム数を取得するにはどうすればよいですか?

  3. Linux のトップ コマンド:us、sy、ni、id、wa、hi、si、st (CPU 使用率) は?

  1. コマンドラインでsortを使用してソートする

  2. Linuxコマンドラインで力を使用する

  3. Linuxコマンドラインで牛を飼う