特定プロセスのCPU使用率が変化した場合に、シェルスクリプトで何かの処理を行いたいなどの場合があるかと思います。そのような場合に使える、psコマンドで特定プロセスのCPU使用率を調べる方法を紹介します。
Armadilloに入っているpsコマンドはBusyboxへのシンボリックリンクになっているため、標準イメージではpsコマンドを実行してもCPU使用率を調べることはできません。
そのため、Debianパッケージからpsコマンドを取得し、インストールする必要があります。Armadilloでpsコマンドを追加するための一連の手順を以下に記載します。
1. psコマンドが入っているDebianパッケージの調査
まずはpsコマンドが入っているDebianパッケージを調査します。
各Armadilloに対応するATDE上で、以下のコマンドを実行することで該当のパッケージを調べることができます。
[ATDE ~]$ dpkg -S `which ps`
procps: /bin/ps
上記コマンド結果から、procpsというDebianパッケージにpsコマンドが含まれていることがわかります。
2. procpsパッケージのダウンロード
Debianパッケージの情報については、以下のURLで検索できます。
- Debian パッケージ検索: https://www.debian.org/distrib/packages
- Debian パッケージ検索(古いDebianのバージョンの場合): http://archive.debian.net/ja/
上記URLからprocpsを検索し、ATDEと同じDebianディストリビューションで、使用しているArmadilloに該当するアーキテクチャのパッケージをダウンロードします。
ATDEとDebianディストリビューションの対応は以下のようになります。
- ATDE3: Debian lenny
- ATDE4: Debian squeeze
- ATDE5: Debian wheezy
3. psコマンドをArmadilloに追加
Debianパッケージからファイルを取出し、Armadilloのルートファイルシステムに追加します。
方法については以下のURLが参考になります。
- http://armadillo.atmark-techno.com/howto/use-debian-binary
まずはpsコマンドのみArmadilloに追加します。
上記のpsはArmadilloの適当なディレクトリ(本ブログでは/root/に配置します)に配置してください。
4. Armadillo上でpsコマンドを実行
Armadilloに追加したpsコマンドを実行すると、libprocsps(環境によってlibproc)が足らないというエラーが発生します。そのため、前述の「1. psコマンドが入っているDebianパッケージの調査」と「2. procpsパッケージのダウンロード」を参考に不足しているライブラリのパッケージを使用してライブラリを、Armadilloの/usr/libディレクトリに追加します。
ライブラリを追加し、psコマンドを実行すると以下のように表示されます。
[armadillo ~]# ./ps ux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.0 2372 604 ? Ss 08:59 0:05 init
root 2 0.0 0.0 0 0 ? S 08:59 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 08:59 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 08:59 0:00 [kworker/0:0]
root 5 0.0 0.0 0 0 ? S 08:59 0:00 [kworker/u:0]
root 6 0.0 0.0 0 0 ? S< 08:59 0:00 [cpuset]
:
:
:
上記の%CPUとCOMMANDのみ表示する場合には、以下のようなコマンドを使用することもできます。
[armadillo ~]# ./ps xo pcpu,comm %CPU COMMAND 0.1 init 0.0 kthreadd 0.0 ksoftirqd/0 0.0 kworker/0:0 0.0 kworker/u:0 0.0 cpuset : : :
参考. psコマンドをユーザーランドイメージに追加する方法
最終的にpsコマンドをユーザーランドイメージに追加する場合は、以下のURLが参考になります。
- https://users.atmark-techno.com/blog/53/1048