LoginSignup
1
0

More than 3 years have passed since last update.

ps auxの出力結果をCSVに出力するシェルスクリプト

Last updated at Posted at 2021-03-26

プロセスごとのCPU負荷計測用に作成したスクリプトです。

一定周期の出力結果を1つのCSVファイルに追記していくパターンと
ダンプした時間帯ごとにCSVファイルを分割するパターンの2パターンで作成してみました。
用途に応じて使い分けも可能です。

パターン①:一定周期の出力結果を1つのCSVに追記していく

作成したシェルスクリプトはこちら。

record_ps_aux.sh
while true;
do 
date
date "+%Y/%m/%d %H:%M:%S" >> ps_record.csv;
ps aux | awk '{ printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11);}' >> ps_record.csv;
sleep 10; #10sec周期で実行
done; 

10秒周期でps -auxコマンドの出力結果を1つのCSVファイルにどんどん記録していくものです。コンソール上にはdateコマンドにより記録した時間のタイムスタンプが出力されます。
後でExcelでの編集が容易になるよう、awkを使ってタブ区切りで出力するようにしています。

見ての通り、無限ループで実行しているため、計測終了後にCtrl+Zで強制終了する必要がありますのでご注意ください。

パターン②:ダンプした時間帯ごとにCSVファイルを分割する

record_ps_aux2.sh
while true;
do 
date
ps aux | awk '{ printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11);}' > ps_record_`date +%Y%m%d_%H%M%S`.csv;
sleep 3600;
done; 

こちらはps -auxコマンド実行した時間ごとに出力するCSVファイルを分ける形式です。
dateコマンドの出力結果を出力先ファイル名の末尾に記載することで、タイムスタンプごとのCSV出力が可能となります。

こちらも無限ループで回してるため、計測終了後に強制終了するのを忘れずにお願いします。

おわりに

もう少しうまい書き方などありましたら、ぜひご教示いただけると嬉しいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0