デジタルとアナログの中庸

日常はITにどっぷり、時々市中の山居。

adbでtop(CPU負荷)とdateをセットでファイル出力したい

アプリがどういうときに負荷高いのかLogcatとtopを照らし合わせたいんだけど

topコマンドにはYYMMDDhhmm形式のタイムスタンプがないので

logcatとtopを取りっぱなしにしても、どのタイミングで負荷が上がったのか紐付けが難しい。

 

ちょっと環境が特殊で、adb shell が実行できない環境で

adb にシリアルで繋いで直接入るという環境ということもあり。

Linuxなら他のコマンドとか選択肢があるかもだけど、Androidはコマンド使えるものも限られるしとりあえずできる手段で

とにかくtopにタイムスタンプ一緒に吐こうと。 

一行野郎やってみた 

Quiitaのどこぞやの記事を参考に一行野郎でやってみた。

$ while true; do date >> hoge.txt; top -n 1 -m 10 >> hoge.txt; done;

 

■解説 

date dateコマンドね
>>hoge.txt dateをhoge.txtに追記
top  topコマンド
-n 1 topコマンド1回実行てこと
-m 10 上位10プロセス表示

 

ファイル名を2回書くあたり、いけてないけど。。。

そして排他とか何も考えてないけど。。。

とりあえず 用は足りるのでよしとする。。。

バックグラウンド実行

意外と周りを見渡して知らない人が多かった。

コマンドをバックグランドで実行する方法。

 

どういう時に使うかというと

上記一行野郎をそのまま実行すると、ターミナル取られちゃうからもう一個ターミナル開いてそっちでLogcatとって。。。

みたいなことあるあるじゃないです?

 

そんなときはコマンドの最後に「&」をつけてバックグランド実行。

$ while true; do date >> hoge.txt; top -n 1 -m 10 >> hoge.txt; done &

 

これを実行するとプロセスIDが表示されてターミナルが戻ってきます。

終わるときは

$ kill -KILL プロセスID

するか、

$ fg プロセスID

でもいけたような気がする。(気がするです)

コマンドで実行をフォアに戻してみるとかできます。

プロセスIDを忘れたら ps コマンドで確認できる。