-
Notifications
You must be signed in to change notification settings - Fork 29
/
ubic
executable file
·94 lines (63 loc) · 2.1 KB
/
ubic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/usr/bin/env perl
package ubic;
use strict;
use warnings;
# ABSTRACT: command-line frontend to ubic services
=head1 SYNOPSIS
ubic [-f] COMMAND [SERVICE]...
Supported commands:
status
start
stop
restart
reload
force-reload
cached-status
try-restart
...and any service-specific commands
=head1 DESCRIPTION
This program can start, stop and display status of any services. It is a main tool for system administrator who wants to operate ubic services.
B<ubic> conforms to LSB interface for init scripts (L<http://refspecs.freestandards.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html>) with obvious exception that it is invoked as C<ubic COMMAND SERVICE> instead of C</etc/init.d/SERVICE COMMAND>.
It also can operate several services at once:
=over
=item *
if invoked as C<ubic start service1 service2>, it will try to start both services;
=item *
if invoked as C<ubic start multiservice>, it will start all subservices of given multiservice;
=item *
if invoked as C<ubic start>, it will start all existing services.
=back
When operating multiservices, flag B<-f> can be used to force operations on "protected" multiservices. For example, you can't restart all services on host using C<ubic restart>, you have to say C<ubic restart -f>.
=head1 EXIT STATUS
When managing one service, exit status conforms to LSB specification when it makes sense.
When managing several services, exit code is non-zero if any service fails, and zero if all operations succeeded.
=head1 SEE ALSO
L<LSB - Init Script Actions|http://refspecs.freestandards.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html>
=cut
use Getopt::Long 2.33;
use Pod::Usage;
use Ubic;
use Ubic::Cmd;
return 1 if caller();
my $force;
GetOptions(
'f|force' => \$force,
) or pod2usage(2);
unless (@ARGV) {
pod2usage(2);
}
my $command = shift @ARGV;
if (@ARGV) {
Ubic::Cmd->run({
name => [@ARGV],
command => $command,
force => $force,
});
}
else {
Ubic::Cmd->run({
name => undef,
command => $command,
force => $force,
});
}