2011-12-19 15 views
3

我有一個相當大數量的cronjobs運行在不同程度的漂亮的web服務器上。cronjobs的日誌cpu時間,高峯mem等

看來它們中的一些在測試數據庫上需要一個意想不到的CPU週期數。當然,我可以看到16:30咆哮什麼工作,但由於crons的數量,如果我有一個日誌像這樣我的任務就容易多了:

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

是否有一個工具,我可以只是在crontab前添加,像這樣:

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

也許一些有關getrusage(2)

回答

0

實際上,你可以從PHP調用getrusage,所以也許這樣的想法是可行的:不是調用的/ usr/bin中/從crontab的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)命令也可能對此有用。