diff options
Diffstat (limited to 'MPE/druid/bin/service')
| -rw-r--r-- | MPE/druid/bin/service | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/MPE/druid/bin/service b/MPE/druid/bin/service new file mode 100644 index 0000000..372cd14 --- /dev/null +++ b/MPE/druid/bin/service @@ -0,0 +1,70 @@ +#!/usr/bin/env perl + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +use strict; +use warnings; + +use Cwd qw/realpath/; +use Fcntl; +use File::Basename; +use FindBin; +use Getopt::Long qw/:config require_order gnu_compat/; + +sub usage +{ + die "usage: $0 (--restart <service> | --tail <service> | --down) [-d <var dir>]\n"; +} + +# Parse arguments +my %opt = ( + 'vardir' => realpath("$FindBin::Bin/../var"), +); + +usage() unless GetOptions(\%opt, 'command=s', 'restart=s', 'down', 'tail=s', 'vardir|d=s'); + +my $svdir = "$opt{vardir}/sv"; +my $command; + +if ($opt{command}) { + usage() if $command; + $command = $opt{command}; +} + +if ($opt{down}) { + usage() if $command; + $command = 'd'; +} + +if ($opt{restart}) { + usage() if $command; + $command = "k $opt{restart}"; +} + +if ($opt{tail}) { + usage() if $command; + exec "tail", "-f", "$svdir/$opt{tail}.log" + or die "exec failed: $!\n"; +} + +usage() unless $command; + +my $fifofile = "$svdir/.ctrl"; +sysopen my $fifofh, $fifofile, O_WRONLY or die "Can't open control fifo, perhaps supervise is not running: $!\n"; +print $fifofh "$command\n"; +close $fifofh; |
