ファイルが更新されてたら何かするPerlスクリプト
ファイルが更新されたら何かするスクリプトを書きました。
(任意の)ロックファイルに、対象ファイルを前回処理したときの
対象ファイルのタイムスタンプを保存しておきます。
スクリプトをcronとかで回して、対象ファイルの更新時間が変わっていたら、
指定したスクリプトを走らせるという、単純なものです。
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use IO::File;
my $target_file = $ARGV[0];
my $lock_file = $ARGV[1];
my $process_file = '';
unless ($ARGV[2]) {
$lock_file = $ARGV[0].'lock';
$process_file = $ARGV[1];
}
else{
$process_file = $ARGV[2];
}
unless (-e $target_file) {
die "[error : cl_auto_compile] There is not target file to auto process.";
}
my $pre_time = localtime( (stat($target_file))[9] );
# 処理する必要が無ければ止める
if (-e $lock_file) {
my $io = IO::File->new($lock_file, 'r') or die $!;
my $line = $io->getline;
$io->close;
if ($pre_time eq $line){
exit;
}
}
# 処理を書いたファイルを実行する
{
my $io = IO::File->new($lock_file, 'w');
$io->print($pre_time);
$io->close;
eval{`$process_file`};
}
exit;
# 実行方法
# ./auto_process.pl 対象ファイルのパス 処理を書いたファイルのパス
# ./auto_process.pl 対象ファイルのパス 対象ファイルのロックファイルのパス 処理を書いたファイルのパス
たぶん、こういうの他にあると思うんですが。。。
投稿者:としのり 日時:23:59:59 | コメント | トラックバック() |

