| Bio-GMOD documentation | Contained in the Bio-GMOD distribution. |
Bio::GMOD::Admin::Monitor::acedb - Monitor acedb/sgifaceserver
Check that sgifaceserver is running
use Bio::GMOD::Admin::Monitor::acedb; my $gmod = Bio::GMOD::Admin::Monitor::acedb->new(); $gmod->check_status(); print "Testing acedb status at " . $gmod->tested_at . ": $status";
Bio::GMOD::Admin::Monitor::acedb provides methods for monitoring and restarting acedb/sgifaceserver as necessary.
Check the status of acedb on the localhost. Note that because in most installations, sgifaceserver is configured to run under xinetd/inetd. If there has been a long period with no requests, sgifaceserver may have timed out.
This method returns a two element list comprised of ($string,$status). $string will contain a formatted string indicating the test, time, and result; $status will be boolean true or false indicating the success or failure of the test.
This method also populates the object with a variety of status strings. See the "ACCESSOR METHODS" section of Bio::GMOD::Admin::Monitor for additional details.
Restart sgifaceserver using a variety of methods, starting from least to most aggressive.
Options:
-user These two options will be used to try and restart sgifaceserver
-pass using the ace.pl script (if installed on your system) (admin/ace123)
-xinetd full path to xinetd undet control of init.d
(defaults to /etc/rc.d/init.d/xinetd if not provided)
The following attempts will be made to try and restart sgifaceserver:
1. via ace.pl 2. By reloading xinetd through inetd 3. By sending xinetd a HUP 4. By sending inetd a HUP
Note that restarting sgifaceserver can take some time depending on your system! Be patient!
This method returns a two element list comprised of ($string,$status). $string will contain a formatted string indicating the test, time, and result; $status will be boolean true or false indicating the success or failure of the test.
Like check_status(), this method populates a number of status fields in the object. See the "ACCESSOR METHODS" section of Bio::GMOD::Admin::Monitor for additional details.
None reported.
Todd W. Harris <harris@cshl.org>.
Copyright (c) 2003-2005 Cold Spring Harbor Laboratory.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Bio-GMOD documentation | Contained in the Bio-GMOD distribution. |
package Bio::GMOD::Admin::Monitor::acedb; # Monitor and restart acedb as needed use strict; use vars qw/@ISA/; use Bio::GMOD::Admin::Monitor; use Bio::GMOD::Util::Rearrange; @ISA = qw/Bio::GMOD::Admin::Monitor/; # Check that sgifaceserver is running on the provided port sub check_status { my ($self,@p) = @_; my @ps = `ps -aux | grep sgifaceserver`; my $is_up; foreach (@ps) { $is_up++ if (/sgifaceserver\s\//); } $self->{testing} = 'acedb'; $self->{tested_at} = $self->fetch_date; my ($string,$status) = $self->set_status(-timing => 'initial', -msg => "Testing acedb/sgifaceserver", -status => ($is_up) ? 'up' : 'down'); return ($string,$status); } sub restart { my ($self,@p) = @_; my ($xinetd,$user,$pass) = rearrange([qw/XINETD USER PASS/],@p); $xinetd ||= '/etc/rc.d/init.d/xinetd'; $user ||= 'admin'; $pass ||= 'ace123'; # Try restarting sgiface from least to most aggressive my $result = (system "/usr/local/acedb/bin/ace.pl -port 2005 -user $user -pass $pass -e 'shutdown now'"); # Try restarting xinetd $result = system($xinetd,'reload'); # Directly restart xinetd on some systems $result = system('killall -HUP xinetd') unless ($result == 0); # Try restarting via inetd $result = system('killall -HUP inetd') unless ($result == 0); my ($string,$status); if ($result != 0) { ($string,$status) = $self->set_status(-timing => 'final', -msg => "Restarting acedb/sgifaceserver/xinetd", -status => 'failed'); } else { ($string,$status) = $self->set_status(-timing => 'final', -msg => "Restarting acedb/sgifaceserver/xinetd", -status => 'succeeded'); } return ($string,$status); } 1;