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 コマンドで確認できる。