]>
Commit | Line | Data |
---|---|---|
763b88c2 AM |
1 | #!/bin/sh |
2 | ||
3b917b57 AM |
3 | # Set up a default search path. |
4 | PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin" | |
5 | export PATH | |
6 | ||
58f95af1 ER |
7 | is_ignored_file() { |
8 | case "$1" in | |
9 | skeleton | README | *.dpkg-dist | *.dpkg-old | rc | rcS | single | reboot | bootclean.sh) | |
10 | return 0 | |
11 | ;; | |
12 | *rpmorig | *rpmnew | *rpmsave | *~ | *.orig) | |
13 | return 0 | |
14 | ;; | |
15 | esac | |
16 | return 1 | |
17 | } | |
18 | ||
cb7c8b9c | 19 | # check if SERVICE is present in systemd and ACTION is valid systemctl command |
8e9e592e ER |
20 | # returns false if systemd is disabled or not active |
21 | is_systemd_service() { | |
cb7c8b9c | 22 | local SERVICE=$1 ACTION=$2 |
8e9e592e ER |
23 | |
24 | [ "$USE_SYSTEMD" = "no" ] && return 1 | |
cb7c8b9c ER |
25 | |
26 | case "$ACTION" in | |
27 | # list obtained as: man systemctl | grep N.*A.*M.*E | |
28 | start | \ | |
29 | stop | \ | |
30 | reload | \ | |
31 | restart | \ | |
32 | try-restart | \ | |
33 | reload-or-restart | \ | |
34 | reload-or-try-restart | \ | |
35 | isolate | \ | |
36 | kill | \ | |
37 | is-active | \ | |
38 | status | \ | |
39 | show | \ | |
40 | reset-failed | \ | |
41 | enable | \ | |
42 | disable | \ | |
43 | is-enabled | \ | |
44 | reenable | \ | |
45 | preset | \ | |
46 | mask | \ | |
47 | unmask | \ | |
48 | link | \ | |
49 | load | \ | |
50 | snapshot | \ | |
51 | delete | \ | |
52 | set-environment | \ | |
53 | unset-environment ) | |
54 | ;; | |
55 | *) | |
56 | #echo "Not valid systemd command" | |
57 | return 1 | |
58 | esac | |
59 | ||
8e9e592e ER |
60 | [ -x /bin/systemd_booted ] || return 1 |
61 | /bin/systemd_booted || return 1 | |
62 | ||
63 | /bin/systemctl show "$SERVICE".service | grep -q LoadError= && return 1 || return 0 | |
64 | } | |
65 | ||
cd835e00 | 66 | status_all() { |
88a9daf2 | 67 | local SERVICE TYPE |
cd835e00 ER |
68 | cd ${SERVICEDIR} |
69 | for SERVICE in *; do | |
70 | case "${SERVICE}" in | |
71 | functions | halt | killall | single| linuxconf| kudzu) | |
72 | ;; | |
73 | *) | |
74 | if ! is_ignored_file "${SERVICE}" \ | |
75 | && [ -x "${SERVICEDIR}/${SERVICE}" ]; then | |
88a9daf2 ER |
76 | if [ -f /etc/init/${SERVICE}.conf ]; then |
77 | # U for upstart | |
78 | TYPE='U' | |
79 | else | |
80 | # S for SysVinit | |
81 | TYPE='S' | |
82 | fi | |
cd835e00 ER |
83 | if ! grep -qs "\Wstatus)" "$SERVICE"; then |
84 | #printf " %s %-60s %s\n" "[?]" "$SERVICE:" "unknown" 1>&2 | |
32eb1940 | 85 | echo " [ ? ]{$TYPE} $SERVICE" |
cd835e00 ER |
86 | continue |
87 | else | |
88 | out=$(env -i USE_UPSTART=$USE_UPSTART LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status 2>&1) | |
89 | if [ "$?" = "0" -a -n "$out" ]; then | |
90 | #printf " %s %-60s %s\n" "[+]" "$SERVICE:" "running" | |
88a9daf2 | 91 | echo " [ + ]{$TYPE} $SERVICE" |
cd835e00 ER |
92 | continue |
93 | else | |
94 | #printf " %s %-60s %s\n" "[-]" "$SERVICE:" "NOT running" | |
88a9daf2 | 95 | echo " [ - ]{$TYPE} $SERVICE" |
cd835e00 ER |
96 | continue |
97 | fi | |
98 | fi | |
99 | #env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status | |
100 | fi | |
101 | ;; | |
102 | esac | |
103 | done | |
104 | } | |
105 | ||
86ae1ad7 | 106 | VERSION="$(basename $0) ver. 0.91-pld" |
bf14fcab | 107 | USAGE="Usage: $(basename $0) < option > | --status-all | \ |
763b88c2 | 108 | [ service_name [ command | --full-restart ] ]" |
3b917b57 | 109 | |
763b88c2 | 110 | SERVICE= |
9fb27aac | 111 | USE_UPSTART= |
8e9e592e | 112 | USE_SYSTEMD= |
3b917b57 | 113 | |
763b88c2 | 114 | if [ -d /etc/rc.d/init.d ]; then |
1050f687 | 115 | SERVICEDIR="/etc/rc.d/init.d" |
763b88c2 | 116 | else |
1050f687 | 117 | SERVICEDIR="/etc/init.d" |
763b88c2 AM |
118 | fi |
119 | ||
120 | if [ $# -eq 0 ]; then | |
1050f687 JR |
121 | echo "${USAGE}" >&2 |
122 | exit 1 | |
763b88c2 AM |
123 | fi |
124 | ||
a6c22d3d AM |
125 | cd / |
126 | while [ $# -gt 0 ]; do | |
1050f687 | 127 | case "${1}" in |
dd0f0d33 | 128 | --help | -h | --h* ) |
1050f687 JR |
129 | echo "${USAGE}" >&2 |
130 | exit 0 | |
131 | ;; | |
dd0f0d33 | 132 | --version | -V ) |
1050f687 JR |
133 | echo "${VERSION}" >&2 |
134 | exit 0 | |
135 | ;; | |
75ca301e AM |
136 | --ignore-dependencies) |
137 | export SYSTEMCTL_IGNORE_DEPENDENCIES=1 | |
138 | shift | |
139 | ;; | |
140 | --skip-redirect) | |
141 | export SYSTEMCTL_SKIP_REDIRECT=1 | |
142 | shift | |
143 | ;; | |
36924fb4 ER |
144 | --upstart) |
145 | USE_UPSTART=yes | |
9fb27aac JK |
146 | shift |
147 | ;; | |
36924fb4 ER |
148 | --no-upstart) |
149 | USE_UPSTART=no | |
9fb27aac JK |
150 | shift |
151 | ;; | |
8e9e592e ER |
152 | --no-systemd) |
153 | USE_SYSTEMD=no | |
154 | shift | |
155 | ;; | |
cd835e00 | 156 | *) |
1050f687 | 157 | if [ -z "${SERVICE}" -a $# -eq 1 -a "${1}" = "--status-all" ]; then |
cd835e00 | 158 | status_all |
1050f687 JR |
159 | exit 0 |
160 | elif [ $# -eq 2 -a "${2}" = "--full-restart" ]; then | |
161 | SERVICE="${1}" | |
162 | if [ -x "${SERVICEDIR}/${SERVICE}" ]; then | |
9fb27aac JK |
163 | env -i USE_UPSTART=$USE_UPSTART LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" stop |
164 | env -i USE_UPSTART=$USE_UPSTART LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" start | |
1050f687 JR |
165 | exit $? |
166 | fi | |
167 | elif [ -z "${SERVICE}" ]; then | |
168 | SERVICE="${1}" | |
dd0f0d33 ER |
169 | elif [ -z "${ACTION}" ]; then |
170 | ACTION="${1}" | |
1050f687 JR |
171 | else |
172 | OPTIONS="${OPTIONS} ${1}" | |
173 | fi | |
174 | shift | |
175 | ;; | |
176 | esac | |
763b88c2 AM |
177 | done |
178 | ||
cb7c8b9c | 179 | if is_systemd_service "${SERVICE}" "${ACTION}"; then |
2a792152 | 180 | echo >&2 "Redirecting to /bin/systemctl ${ACTION} ${SERVICE}.service ${OPTIONS}" |
aa57b7e6 AM |
181 | exec /bin/systemctl ${ACTION} ${SERVICE}.service ${OPTIONS} |
182 | elif [ -x "${SERVICEDIR}/${SERVICE}" ]; then | |
183 | exec env -i USE_UPSTART=$USE_UPSTART LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" ${ACTION} ${OPTIONS} | |
763b88c2 | 184 | else |
1050f687 JR |
185 | echo "${SERVICE}: unrecognized service" >&2 |
186 | exit 1 | |
763b88c2 | 187 | fi |