]>
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 | ||
8e9e592e ER |
19 | # check if SERVICE is present in systemd |
20 | # returns false if systemd is disabled or not active | |
21 | is_systemd_service() { | |
22 | local SERVICE=$1 | |
23 | ||
24 | [ "$USE_SYSTEMD" = "no" ] && return 1 | |
25 | [ -x /bin/systemd_booted ] || return 1 | |
26 | /bin/systemd_booted || return 1 | |
27 | ||
28 | /bin/systemctl show "$SERVICE".service | grep -q LoadError= && return 1 || return 0 | |
29 | } | |
30 | ||
cd835e00 | 31 | status_all() { |
88a9daf2 | 32 | local SERVICE TYPE |
cd835e00 ER |
33 | cd ${SERVICEDIR} |
34 | for SERVICE in *; do | |
35 | case "${SERVICE}" in | |
36 | functions | halt | killall | single| linuxconf| kudzu) | |
37 | ;; | |
38 | *) | |
39 | if ! is_ignored_file "${SERVICE}" \ | |
40 | && [ -x "${SERVICEDIR}/${SERVICE}" ]; then | |
88a9daf2 ER |
41 | if [ -f /etc/init/${SERVICE}.conf ]; then |
42 | # U for upstart | |
43 | TYPE='U' | |
44 | else | |
45 | # S for SysVinit | |
46 | TYPE='S' | |
47 | fi | |
cd835e00 ER |
48 | if ! grep -qs "\Wstatus)" "$SERVICE"; then |
49 | #printf " %s %-60s %s\n" "[?]" "$SERVICE:" "unknown" 1>&2 | |
32eb1940 | 50 | echo " [ ? ]{$TYPE} $SERVICE" |
cd835e00 ER |
51 | continue |
52 | else | |
53 | out=$(env -i USE_UPSTART=$USE_UPSTART LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status 2>&1) | |
54 | if [ "$?" = "0" -a -n "$out" ]; then | |
55 | #printf " %s %-60s %s\n" "[+]" "$SERVICE:" "running" | |
88a9daf2 | 56 | echo " [ + ]{$TYPE} $SERVICE" |
cd835e00 ER |
57 | continue |
58 | else | |
59 | #printf " %s %-60s %s\n" "[-]" "$SERVICE:" "NOT running" | |
88a9daf2 | 60 | echo " [ - ]{$TYPE} $SERVICE" |
cd835e00 ER |
61 | continue |
62 | fi | |
63 | fi | |
64 | #env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status | |
65 | fi | |
66 | ;; | |
67 | esac | |
68 | done | |
69 | } | |
70 | ||
86ae1ad7 | 71 | VERSION="$(basename $0) ver. 0.91-pld" |
bf14fcab | 72 | USAGE="Usage: $(basename $0) < option > | --status-all | \ |
763b88c2 | 73 | [ service_name [ command | --full-restart ] ]" |
3b917b57 | 74 | |
763b88c2 | 75 | SERVICE= |
9fb27aac | 76 | USE_UPSTART= |
8e9e592e | 77 | USE_SYSTEMD= |
3b917b57 | 78 | |
763b88c2 | 79 | if [ -d /etc/rc.d/init.d ]; then |
1050f687 | 80 | SERVICEDIR="/etc/rc.d/init.d" |
763b88c2 | 81 | else |
1050f687 | 82 | SERVICEDIR="/etc/init.d" |
763b88c2 AM |
83 | fi |
84 | ||
85 | if [ $# -eq 0 ]; then | |
1050f687 JR |
86 | echo "${USAGE}" >&2 |
87 | exit 1 | |
763b88c2 AM |
88 | fi |
89 | ||
a6c22d3d AM |
90 | cd / |
91 | while [ $# -gt 0 ]; do | |
1050f687 | 92 | case "${1}" in |
dd0f0d33 | 93 | --help | -h | --h* ) |
1050f687 JR |
94 | echo "${USAGE}" >&2 |
95 | exit 0 | |
96 | ;; | |
dd0f0d33 | 97 | --version | -V ) |
1050f687 JR |
98 | echo "${VERSION}" >&2 |
99 | exit 0 | |
100 | ;; | |
75ca301e AM |
101 | --ignore-dependencies) |
102 | export SYSTEMCTL_IGNORE_DEPENDENCIES=1 | |
103 | shift | |
104 | ;; | |
105 | --skip-redirect) | |
106 | export SYSTEMCTL_SKIP_REDIRECT=1 | |
107 | shift | |
108 | ;; | |
36924fb4 ER |
109 | --upstart) |
110 | USE_UPSTART=yes | |
9fb27aac JK |
111 | shift |
112 | ;; | |
36924fb4 ER |
113 | --no-upstart) |
114 | USE_UPSTART=no | |
9fb27aac JK |
115 | shift |
116 | ;; | |
8e9e592e ER |
117 | --no-systemd) |
118 | USE_SYSTEMD=no | |
119 | shift | |
120 | ;; | |
cd835e00 | 121 | *) |
1050f687 | 122 | if [ -z "${SERVICE}" -a $# -eq 1 -a "${1}" = "--status-all" ]; then |
cd835e00 | 123 | status_all |
1050f687 JR |
124 | exit 0 |
125 | elif [ $# -eq 2 -a "${2}" = "--full-restart" ]; then | |
126 | SERVICE="${1}" | |
127 | if [ -x "${SERVICEDIR}/${SERVICE}" ]; then | |
9fb27aac JK |
128 | env -i USE_UPSTART=$USE_UPSTART LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" stop |
129 | env -i USE_UPSTART=$USE_UPSTART LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" start | |
1050f687 JR |
130 | exit $? |
131 | fi | |
132 | elif [ -z "${SERVICE}" ]; then | |
133 | SERVICE="${1}" | |
dd0f0d33 ER |
134 | elif [ -z "${ACTION}" ]; then |
135 | ACTION="${1}" | |
1050f687 JR |
136 | else |
137 | OPTIONS="${OPTIONS} ${1}" | |
138 | fi | |
139 | shift | |
140 | ;; | |
141 | esac | |
763b88c2 AM |
142 | done |
143 | ||
8e9e592e | 144 | if is_systemd_service "${SERVICE}"; then |
2a792152 | 145 | echo >&2 "Redirecting to /bin/systemctl ${ACTION} ${SERVICE}.service ${OPTIONS}" |
aa57b7e6 AM |
146 | exec /bin/systemctl ${ACTION} ${SERVICE}.service ${OPTIONS} |
147 | elif [ -x "${SERVICEDIR}/${SERVICE}" ]; then | |
148 | exec env -i USE_UPSTART=$USE_UPSTART LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" ${ACTION} ${OPTIONS} | |
763b88c2 | 149 | else |
1050f687 JR |
150 | echo "${SERVICE}: unrecognized service" >&2 |
151 | exit 1 | |
763b88c2 | 152 | fi |