2011-12-19 5 views
3

私はウェブサーバ上でかなりのレベルのnicenessで走っているかなり多くのcronjobを持っています。ログcpu時間、ピークmemなどcronjobs

これらの中には、テストデータベースで予期せぬ数のCPUサイクルを必要としているようです。もちろん、私は仕事が16:30暴言ものを見ることができますが、私はこのようなログを持っていた場合に起因cronsの数に、私の仕事はずっと容易になるだろう:

Dec 19 02:13:09 /var/crons/cron1 [user cpu time used] [system cpu time used] [peak mem] .. 

は、私ができるユーティリティがありますちょうどそのように、crontabの前に追加します:getrusage(2)に関連

*/6 * * * * nice -n 18 getrusage?? /usr/bin/php /var/crons/cron1 > /var/log/something 

たぶん何かを?

答えて

0

あなたが実際ので、多分このアイデアは実行可能で、PHPからgetrusageを呼び出すことができます。

:代わりのcrontabからは/ usr/bin/phpを呼び出すのでは、前と実際のPHPスクリプトを呼び出した後GETRUSAGEからを呼び出すラッパーを呼び出します
#!/usr/bin/php 
<?php 
$fh = fopen("/var/log/cronusage.log", "a"); 
fputs($fh, "Executing " . $_SERVER['argv'][1] . "\n"); 
fputs($fh, "BEFORE\n"); 
foreach (getrusage() as $k => $v) { 
    fputs($fh, "$k -> $v\n"); 
} 
fclose($fh); 

$_SERVER['argv'][0] = '/usr/bin/php'; 
// FIXME Attention args not escaped possible security vuln. 
system(join(' ', $_SERVER['argv'])); 

$fh = fopen("/var/log/cronusage.log", "a"); 
fputs($fh, "AFTER\n"); 
foreach (getrusage() as $k => $v) { 
    fputs($fh, "$k -> $v\n"); 
} 
fputs($fh, "\n"); 
fclose($fh); 
?> 

これはテストされたものではなく、単なるアイデアです。

time(1)コマンドは、この目的にも役立ちます。