AIXSPadmin
MIS
Why is this not running as a daemon? It works for another script I wrote, but it does a system call to a shell script, but this is not running the dsmadmc command continuously. Any ideas? Thanks.
#!/usr/bin/perl
# load required modules
use strict;
use POSIX qw(setsid);
use POSIX qw(strftime);
# set constants
my $NodeName = `uname -n`;
# flush the buffer
$| = 1;
# daemonize the program
&daemonize;
# infinite loop
while(1) {
my $val = `dsmadmc -id=user -pass=pass "SELECT count (volume_na
me) as Scratch FROM libvolumes WHERE status='Scratch'" | tail -4 | head -1 | awk
'{print $1}'`;
if ($val eq 0) { exit 0 }
elsif ($val eq 1) { exit 1 }
elsif ($val eq 2) { exit 2 }
elsif ($val eq 3) { exit 3 }
elsif ($val eq 4) { exit 4 }
elsif ($val eq 5) { exit 5 }
else { exit 99 }
}
sub daemonize {
chdir '/' or die "Can't chdir to /: $!";
umask 0;
open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
open STDERR, '/dev/null' or die "Can' 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 $NodeName = `uname -n`;
# flush the buffer
$| = 1;
# daemonize the program
&daemonize;
# infinite loop
while(1) {
my $val = `dsmadmc -id=user -pass=pass "SELECT count (volume_na
me) as Scratch FROM libvolumes WHERE status='Scratch'" | tail -4 | head -1 | awk
'{print $1}'`;
if ($val eq 0) { exit 0 }
elsif ($val eq 1) { exit 1 }
elsif ($val eq 2) { exit 2 }
elsif ($val eq 3) { exit 3 }
elsif ($val eq 4) { exit 4 }
elsif ($val eq 5) { exit 5 }
else { exit 99 }
}
sub daemonize {
chdir '/' or die "Can't chdir to /: $!";
umask 0;
open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
open STDERR, '/dev/null' or die "Can' 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: $!";
}