Os independent interface to the unix 'at' command
require Schedule::At; Schedule::At::add(TIME => $string, COMMAND => $string [, TAG =>$string]); Schedule::At::add(TIME => $string, COMMAND => \@array [, TAG =>$string]); Schedule::At::add(TIME => $string, FILE => $string) %jobs = Schedule::At::getJobs(); %jobs = Schedule::At::getJobs(JOBID => $string); %jobs = Schedule::At::getJobs(TAG => $string); Schedule::At::readJobs(JOBID => $string); Schedule::At::readJobs(TAG => $string); Schedule::At::remove(JOBID => $string); Schedule::At::remove(TAG => $string);
This modules provides an \s-1OS\s0 independent interface to 'at', the Unix command that allows you to execute commands at a specified time.
Adds a new job to the at queue. You have to specify a \s-1TIME\s0 and a command to execute. The \s-1TIME\s0 has a common format: YYYYMMDDHHmm where \s-1YYYY\s0 is the year (4 digits), \s-1MM\s0 the month (01-12), \s-1DD\s0 is the day (01-31), \s-1HH\s0 the hour (00-23) and mm the minutes. The command is passed with the \s-1COMMAND\s0 or the \s-1FILE\s0 parameter. \s-1COMMAND\s0 can be used to pass the command as an string, or an array of commands, and \s-1FILE\s0 to read the commands from a file. The optional parameter \s-1TAG\s0 serves as an application specific way to identify a job or a set of jobs. Returns 0 on success or a value != 0 if an error occurred.
Read the job content identified by the \s-1JOBID\s0 or \s-1TAG\s0 parameters. Returns a hash of \s-1JOBID\s0 => $string where $string is the the job content. As the operating systems usually add a few environment settings, the content is longer than the command provided when adding the job.
Remove an at job. You identify the job to be deleted using the \s-1JOBID\s0 parameter (an opaque string returned by the getJobs subroutine). You can also specify a job or a set of jobs to delete with the \s-1TAG\s0 parameter, removing all the jobs that have the same tag (as specified with the add subroutine). Used with \s-1JOBID\s0, returns 0 on success or a value != 0 if an error occurred. Used with \s-1TAG\s0, returns a hash reference where the keys are the \s-1JOBID\s0 of the jobs found and the values indicate the success of the remove operation.
Called with no params returns a hash with all the current jobs or dies if an error has occurred. It's possible to specify the \s-1TAG\s0 or \s-1JOBID\s0 parameters so only matching jobs are returned. For each job the key is a \s-1JOBID\s0 (an \s-1OS\s0 dependent string that shouldn't be interpreted), and the value is a hash reference. This hash reference points to a hash with the keys:
An \s-1OS\s0 dependent string specifying the time to execute the command
The tag specified in the Schedule::At::add subroutine
$Schedule::At::SHELL This variable can be used to specify shell for execution of the scheduled command. Can be useful for example when scheduling from \s-1CGI\s0 script and the account of the user under which httpd runs is locked by using '/bin/false' or similar as a shell.
use Schedule::At;
# 1 Schedule::At::add (TIME => '199801181530', COMMAND => 'ls', TAG => 'ScheduleAt'); # 2 @cmdlist = ("ls", "echo hello world");
Schedule::At::add (TIME => '199801181630', COMMAND => \@cmdlist, TAG => 'ScheduleAt'); # 3 Schedule::At::add (TIME => '199801181730', COMMAND => 'df');
# This will remove #1 and #2 but no #3 Schedule::At::remove (TAG => 'ScheduleAt');
my %atJobs = Schedule::At::getJobs(); foreach my $job (values %atJobs) { print "\t", $job->{JOBID}, "\t", $job->{TIME}, ' ', ($job->{TAG} || ''), "\n"; }
Jose A. Rodriguez (jose \s-1AT\s0 rodriguez.jp)