共有メモリ
http://d.hatena.ne.jp/hideden/20080409/1207740439
のやつで、エラーログを眺めるだけのお仕事がめんどくさいから手を加えた。
これを仕込んでおいて
package INCDiff; use strict; use Apache::Constants qw(OK); use vars qw(%init_module); my $FILE = '/tmp/inc-diff-modules'; sub init { $init_module{$_}++ for keys %INC; } sub handler { my @required = grep { !$init_module{$_} } keys %INC; my @modules = (); for( @required ) { if( $_ =~ /.pm$/ ) { $_ =~ s/\//::/g; $_ =~ s/.pm$//; push @modules , $_; } } open( FH , ">> $FILE" ) ; print FH "\n"; print FH join "\n", @modules; close( FH ); return OK; } 1;
お茶をしたり、ゲームしたり時間を費やしてアクセスされまくるのを待つ。
で、ファイルできたら、これ実行して、リスト作る
#!/usr/bin/perl use warnings; use strict; use Data::Dumper; my $FILE = '/tmp/inc-diff-modules'; open ( FH , $FILE ); my %module = (); while(<FH>) { chomp $_; next unless $_; $module{$_} = 1; } close( FH ); foreach my $module ( sort keys %module ) { print 'use ' . $module . " ();\n"; }
ついでに
startup.plを鍛えるのは二つの意味でとても有効
- 共有メモリが増える
- サーバーの増設をおこなう際に、モジュールのインストール忘れを簡単に見つけることができる。