cronの各処理の実行時間を測定してみた

なんかcron.dailyの実行がやけに重いなーとおもったので各スクリプトのどの処理が重いか調べてみた

1.timeプログラムのインストール
まずtimeプログラムが必要ですbashからなら普通に打てるのですがbinに入っているものじゃないとエラーになったのでインストール
debianならtimeパッケージをインストールすれば/usr/bin/timeが出来ました

2.実行時間測定スクリプトの作成
次に/tmpに以下のスクリプトを置き

time.pl
#!/usr/bin/perl
use strict;
use warnings;
use feature qw(say);
use Time::HiRes;

my $runpg=shift;
say "### $runpg START ### ",Time::HiRes::time;
system "/usr/bin/time $runpg" and die $!;
say "### $runpg END ### ",Time::HiRes::time;

3.anacrontabの編集
/etc/anacrontabを編集(/etc/crontabの人はそちらを)
#  1   5   cron.daily   nice run-parts -v /etc/cron.daily
1 5 cron.daily nice run-parts --list /etc/cron.daily | xargs -i /tmp/time.pl {}
ポイントはrun-partsを--listにして実行ファイル一覧を出力させてそれを引数として実行時間を計るプログラムに渡す