eval '(exit $?0)' && eval 'PERL=`which perl5`; exec $PERL -wS $0 ${1+"$@"}' & eval 'setenv PERL `which perl5`; exec $PERL -wS $0 $argv:q' if 0; ### Local Variables: *** ### mode:perl *** ### comment-column:0 *** ### comment-start: "### " *** ### comment-end: "***" *** ### End: *** # # ****************DO NOT MOVE OR CHANGE LINES ABOVE THIS********************* # # The first set of lines runs perl from any shell. The second set of lines # identifies the rest of the file as PERL for EMACS autoformatting. # See end of copyright for more information. # # # ------------------------------------------------------------------- # X-BONE # # http://www.isi.edu/xbone # USC Information Sciences Institute (USC/ISI) # Marina del Rey, California 90292, USA # Copyright (c) 1998-2005 # # ------------------------------------------------------------------- # # Copyright (c) 1998-2005 by the University of Southern California. # All rights reserved. # # Permission to use, copy, modify, and distribute this software and # its documentation in source and binary forms for non-commercial # purposes and without fee is hereby granted, provided that the above # copyright notice appear in all copies and that both the copyright # notice and this permission notice appear in supporting # documentation, and that any documentation, advertising materials, # and other materials related to such distribution and use acknowledge # that the software was developed by the University of Southern # California, Information Sciences Institute. The name of the # University may not be used to endorse or promote products derived # from this software without specific prior written permission. # # THE UNIVERSITY OF SOUTHERN CALIFORNIA MAKES NO REPRESENTATIONS ABOUT # THE SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. THIS SOFTWARE IS # PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, # INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # # Other copyrights might apply to parts of this software and are so # noted when applicable. # # ------------------------------------------------------------------- # # Effort partly sponsored by the Defense Advanced Research Projects # Agency (DARPA) and Air Force Research Laboratory, Air Force Materiel # Command, USAF, under agreement numbers F30602-98-1-0200 (X-Bone) and # F30602-01-2-0529 (DynaBone). The views and conclusions contained # herein are those of the authors and should not be interpreted as # necessarily representing the official policies or endorsements, # either expressed or implied, of the Defense Advanced Research # Projects Agency (DARPA), the Air Force Research Laboratory, or the # U.S. Government. # # This work was partly supported by the NSF STI-XTEND (ANI-0230789) # and NETFS (ANI-0129689) projects. Any opinions, findings, and # conclusions or recommendations expressed in this material are those # of the authors and do not necessarily reflect the views of the # National Science Foundation. # # ------------------------------------------------------------------- # $RCSfile: xbonectl.pl,v $ # # $Revision: 1.9 $ # $Author: pingali $ # $Date: 2005/03/31 07:03:51 $ # $State: Exp $ # ---------------------------------------------------------------------------- # The first lines start PERL on any system where perl is in the path. # This is a modified version of the "start perl" script provided in # the PERL man pages, which starts perl on the remainder of the file # regardless of whether it is run under sh, csh, or perl. # # This version is modified to dynamically locate the perl path, rather # than requiring it be hard-coded. use IO::Handle; # start/stop my $cmd = shift @ARGV; $cmd = "" if (not defined $cmd); # extract the working directory and the pid file names my $workdir = "/var/xbone"; my $pidfile = "xbone.pid"; my $i = -1; while ($i < $#ARGV){ $_ = $ARGV[++$i]; SWITCH: { (/^--workdir=/) and do { $_ =~ s/--workdir=//i; $workdir = $op; next; } ; (/^-w$/) and do { $i++; $workdir = $ARGV[$i]; next; }; (/^--pidfile=/) and do { $_ =~ s/--pidfile=//i; $pidfile = $op; next; }; (/^-pid$/) and do { $i++; $pidfile = $ARGV[$i]; next; }; } }; $pidfile = $workdir . "/" . $pidfile; $_ = $cmd; SWITCH: { /start/ && do { my @cmd = ("xb-node-daemon", "-bg", @ARGV); my $status = 0xff & system(@cmd); die ("Could not start the xbone-daemon") if ($status); last SWITCH; }; /stop/ && do { if (-e $pidfile){ open(PID, $pidfile); chomp($cpid=); print "Killing $cpid\n"; kill 15, $cpid; close(PID); }; # it still exists. may be the process does not exist if (-e $pidfile){ my @cmd = ("/bin/rm", $pidfile); system(@cmd); # dont worry about the status } last SWITCH; }; print "Usage: xbonectl.pl [start|stop] [node-daemon options]\n"; } 1;