#!/usr/bin/perl -w #Script to roll log files over nightly and HUP httpd use Date::Calc qw(Today); #function declarations sub graceful(); ($year,$month,$day) = Today(); $logdir = "/var/log"; $logname = "httpd-access.log"; $timestamp = "$year$month$day"; $apachectl = "/usr/local/sbin/apachectl"; $gzip = "/usr/bin/gzip"; if (-e "$logdir/$logname" && !-e "$logdir/$logname.$timestamp") { rename("$logdir/$logname", "$logdir/$logname.$timestamp"); graceful(); } else { print "Cannot rotate log to pre-existing timestamp\n"; } if (-e "$logdir/$logname.$timestamp" && !-e "$logdir/$logname.$timestamp.gz") { system("$gzip $logdir/$logname.$timestamp"); } else { print "file already exists"; } sub graceful() { system("$apachectl graceful"); #restart apache gracefully }