]> git.pld-linux.org Git - projects/rc-scripts.git/blame - service
- detect if service is in systemd (if LoadError means it's not present in systemd)
[projects/rc-scripts.git] / service
CommitLineData
763b88c2
AM
1#!/bin/sh
2
3b917b57
AM
3# Set up a default search path.
4PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"
5export PATH
6
58f95af1
ER
7is_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
21is_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 31status_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 71VERSION="$(basename $0) ver. 0.91-pld"
bf14fcab 72USAGE="Usage: $(basename $0) < option > | --status-all | \
763b88c2 73[ service_name [ command | --full-restart ] ]"
3b917b57 74
763b88c2 75SERVICE=
9fb27aac 76USE_UPSTART=
8e9e592e 77USE_SYSTEMD=
3b917b57 78
763b88c2 79if [ -d /etc/rc.d/init.d ]; then
1050f687 80 SERVICEDIR="/etc/rc.d/init.d"
763b88c2 81else
1050f687 82 SERVICEDIR="/etc/init.d"
763b88c2
AM
83fi
84
85if [ $# -eq 0 ]; then
1050f687
JR
86 echo "${USAGE}" >&2
87 exit 1
763b88c2
AM
88fi
89
a6c22d3d
AM
90cd /
91while [ $# -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
142done
143
8e9e592e 144if 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}
147elif [ -x "${SERVICEDIR}/${SERVICE}" ]; then
148 exec env -i USE_UPSTART=$USE_UPSTART LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" ${ACTION} ${OPTIONS}
763b88c2 149else
1050f687
JR
150 echo "${SERVICE}: unrecognized service" >&2
151 exit 1
763b88c2 152fi
This page took 0.699326 seconds and 4 git commands to generate.