AIXSPadmin
MIS
I am having a problem with cron jobs running for this particular job, therefore I want to create a daemon in perl to run the job, and it works, until I try passing day_of_week, hour, and min in the "if" statement. It works with just dow and hour and prints the message and sleeps. I always work with ksh and hardly ever perl, but unfortunately cannot create a daemon in ksh that I know of so am using perl. How do I get this to work properly. Below is the script. Thanks.
#!/usr/bin/perl
# load required modules
use strict;
use POSIX qw(setsid);
use POSIX qw(strftime);
# set constants
my $DoW = 'Wed';
my $Hour = '13';
my $Min = '11';
my $GetDoW = `date +%a`;
my $GetHour = `date +%H`;
my $GetMin = `date +%M`;
# flush the buffer
$| = 1;
# daemonize the program
&daemonize;
# infinite loop
while(1) {
if ( $GetDoW == $DoW && $GetHour == $Hour && $GetMin == $Min ) {
printf("test message\n"
;
}
sleep(60)
}
sub daemonize {
chdir '/' or die "Can't chdir to /: $!";
umask 0;
open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
#open STDOUT, '/dev/null' or die "Can't write to /dev/null: $!";
open STDERR, '/dev/null' or die "Can't write to /dev/null: $!";
defined(my $pid = fork) or die "Can't fork: $!";
exit if $pid;
setsid or die "Can't start a new session: $!";
}
#!/usr/bin/perl
# load required modules
use strict;
use POSIX qw(setsid);
use POSIX qw(strftime);
# set constants
my $DoW = 'Wed';
my $Hour = '13';
my $Min = '11';
my $GetDoW = `date +%a`;
my $GetHour = `date +%H`;
my $GetMin = `date +%M`;
# flush the buffer
$| = 1;
# daemonize the program
&daemonize;
# infinite loop
while(1) {
if ( $GetDoW == $DoW && $GetHour == $Hour && $GetMin == $Min ) {
printf("test message\n"
}
sleep(60)
}
sub daemonize {
chdir '/' or die "Can't chdir to /: $!";
umask 0;
open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
#open STDOUT, '/dev/null' or die "Can't write to /dev/null: $!";
open STDERR, '/dev/null' or die "Can't write to /dev/null: $!";
defined(my $pid = fork) or die "Can't fork: $!";
exit if $pid;
setsid or die "Can't start a new session: $!";
}