Daemon-Generic
view release on metacpan or search on metacpan
lib/Daemon/Generic.pm view on Meta::CPAN
my %newconfig = $self->gd_preconfig;
$self->{gd_pidfile} = $newconfig{pidfile} if $newconfig{pidfile};
print "PIDFILE=$self->{gd_pidfile}\n" if $self->{debug};
print "Configuration looks okay\n" if $do eq 'check';
my $pidfile = $self->{gd_pidfile};
my $killed = 0;
my $locked = 0;
if (-e $pidfile) {
if ($locked = lock($pidfile, undef, 'nonblocking')) {
# old process is dead
if ($do eq 'status') {
print "$self->{gd_progname} dead\n";
exit 1;
}
} else {
sleep(2) if -M $pidfile < 2/86400;
my $oldpid = read_file($pidfile);
chomp($oldpid);
if ($oldpid) {
if ($do eq 'stop' or $do eq 'restart') {
$killed = $self->gd_kill($oldpid);
$locked = lock($pidfile);
if ($do eq 'stop') {
unlink($pidfile);
exit;
}
} elsif ($do eq 'reload') {
if (kill(1,$oldpid)) {
print "Requested reconfiguration\n";
exit;
} else {
print "Kill failed: $!\n";
lib/Daemon/Generic.pm view on Meta::CPAN
if (kill(0,$oldpid)) {
print "$self->{gd_progname} running - pid $oldpid\n";
$self->gd_check($pidfile, $oldpid);
exit;
}
} elsif ($do eq 'start' || $do eq 'debug') {
print "\u$self->{gd_progname} is already running (pid $oldpid)\n";
exit; # according to LSB, this is no error
}
} else {
$self->gd_error("Pid file $pidfile is invalid but locked, exiting\n");
}
}
} else {
$locked = lock($pidfile, undef, 'nonblocking')
or die "Could not lock pid file $pidfile: $!";
}
if ($do eq 'reload' || $do eq 'stop' || $do eq 'check' || ($do eq 'restart' && ! $killed)) {
print "No $self->{gd_progname} running\n";
}
if ($do eq 'stop') {
unlink($pidfile);
exit;
lib/Daemon/Generic.pm view on Meta::CPAN
print "No $self->{gd_progname} running\n";
exit 3;
}
if ($do eq 'check') {
$self->gd_check($pidfile);
exit
}
unless ($do eq 'reload' || $do eq 'restart' || $do eq 'start' || $do eq 'debug') {
$self->gd_other_cmd($do, $locked);
}
unless ($self->{gd_foreground} || $do eq 'debug') {
$self->gd_daemonize;
}
$locked or lock($pidfile, undef, 'nonblocking')
or die "Could not lock PID file $pidfile: $!";
write_file($pidfile, "$$\n");
print STDERR "Starting up...\n";
$self->gd_postconfig(%newconfig);
$self->gd_setup_signals;
( run in 0.671 second using v1.01-cache-2.11-cpan-49f99fa48dc )