hotsanic |
Subversion Repositories: |
Compare with Previous - Blame - Download
#!/usr/bin/env perl
$|=1;
use lib "../../lib";
use HotSaNICparser;
use HotSaNICmod;
my $MODLOGDIR=".";
my $MODPIDFILE="running.pid";
my $MODNAME=HotSaNICparser::get_module_name();
checkargs(@ARGV);
######################################################################
#
# wrapper
#
sub sample {
if (-e "./read-data") { system ("nice -5 ./read-data"); }
elsif (-e "./read-data.pl") { system ("nice -5 ./read-data.pl"); }
}
sub update {
}
######################################################################
#
# fork into background
#
sub daemonize {
my ($MODPIDFILE,$MODNAME,$MODLOGDIR)=@_;
# set signal handlers
#
$SIG{TERM} = \&terminate;
$SIG{HUP} = \&configure;
$SIG{USR1} = \&sample;
$SIG{USR2} = \&update;
$MODLOGDIR="";
# open STDIN,"/dev/null";
# open STDOUT,">>$MODLOGDIR"."/mod_$MODNAME.log";
# open STDERR,">>$MODLOGDIR"."/mod_$MODNAME.log";
# chdir "/";
fork && exit 0;
}
######################################################################
#
# terminate module daemon
#
sub terminate {
HotSaNICmod::dupe_control("stop",$MODNAME,"");
unlink $MODPIDFILE if -e $MODPIDFILE;
# close STDIN;
# close STDOUT;
# close STDERR;
exit 0;
}
######################################################################
#
# check cmdline arguments
#
sub checkargs {
$args=join " ",@_;
if ( $args eq "" ) {
print "arguments missing!\n";
print "usage: $0 [start/stop/status/version]\n";
}
if ( $args =~ /version/) {
print "wrapper script\n";
}
if ( $args =~ /start/) {
my ($pid,$uptime)=HotSaNICmod::dupe_control("check",$MODNAME,"");
if ($pid > 0) { print "$MODNAME already running on PID $pid\n"; }
else {
daemonize($MODPIDFILE,$MODNAME,$MODLOGDIR);
HotSaNICmod::dupe_control("start",$MODNAME,"");
while (1 == 1) { sleep; }
}
}
if ( $args =~ /status/) {
my ($pid,$uptime)=HotSaNICmod::dupe_control("check",$MODNAME,"");
print "$MODNAME running on PID $pid for $uptime sec.\n";
}
if ( $args =~ /sample/) {
my ($pid,$uptime)=HotSaNICmod::dupe_control("check",$MODNAME,"");
if ($pid > 0) { kill "SIGUSR1",$pid; }
else { print "no process running.\n"; }
}
if ( $args =~ /stop/) {
my ($pid,$uptime)=HotSaNICmod::dupe_control("check",$MODNAME,"");
if ($pid > 0) { kill "SIGTERM",$pid; }
else { print "no process running.\n"; }
}
}