]> git.pld-linux.org Git - projects/rc-scripts.git/blob - service
- tabs
[projects/rc-scripts.git] / service
1 #!/bin/sh
2
3 # Set up a default search path.
4 PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"
5 export PATH
6
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
19 VERSION="$(basename $0) ver. 0.91-pld"
20 USAGE="Usage: $(basename $0) < option > | --status-all | \
21 [ service_name [ command | --full-restart ] ]"
22
23 SERVICE=
24 USE_UPSTART=
25
26 if [ -d /etc/rc.d/init.d ]; then
27         SERVICEDIR="/etc/rc.d/init.d"
28 else
29         SERVICEDIR="/etc/init.d"
30 fi
31
32 if [ $# -eq 0 ]; then
33         echo "${USAGE}" >&2
34         exit 1
35 fi
36
37 cd /
38 while [ $# -gt 0 ]; do
39         case "${1}" in
40         --help | -h | --h* )
41                 echo "${USAGE}" >&2
42                 exit 0
43                 ;;
44         --version | -V )
45                 echo "${VERSION}" >&2
46                 exit 0
47                 ;;
48         --upstart)
49                 USE_UPSTART=yes
50                 shift
51                 ;;
52         --no-upstart)
53                 USE_UPSTART=no
54                 shift
55                 ;;
56         *)
57                 if [ -z "${SERVICE}" -a $# -eq 1 -a "${1}" = "--status-all" ]; then
58                         cd ${SERVICEDIR}
59                         for SERVICE in *; do
60                                 case "${SERVICE}" in
61                                 functions | halt | killall | single| linuxconf| kudzu)
62                                         ;;
63                                 *)
64                                 if ! is_ignored_file "${SERVICE}" \
65                                                 && [ -x "${SERVICEDIR}/${SERVICE}" ]; then
66                                         if ! grep -qs "\Wstatus)" "$SERVICE"; then
67                                                 #printf " %s %-60s %s\n" "[?]" "$SERVICE:" "unknown" 1>&2
68                                                 echo " [ ? ]  $SERVICE" 1>&2
69                                                 continue
70                                         else
71                                                 out=$(env -i USE_UPSTART=$USE_UPSTART LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status 2>&1)
72                                                 if [ "$?" = "0" -a -n "$out" ]; then
73                                                         #printf " %s %-60s %s\n" "[+]" "$SERVICE:" "running"
74                                                         echo " [ + ]  $SERVICE"
75                                                         continue
76                                                 else
77                                                         #printf " %s %-60s %s\n" "[-]" "$SERVICE:" "NOT running"
78                                                         echo " [ - ]  $SERVICE"
79                                                         continue
80                                                 fi
81                                         fi
82                                         #env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status
83                                 fi
84                                 ;;
85                                 esac
86                         done
87                         exit 0
88                 elif [ $# -eq 2 -a "${2}" = "--full-restart" ]; then
89                         SERVICE="${1}"
90                         if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
91                                 env -i USE_UPSTART=$USE_UPSTART LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" stop
92                                 env -i USE_UPSTART=$USE_UPSTART LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" start
93                                 exit $?
94                         fi
95                 elif [ -z "${SERVICE}" ]; then
96                         SERVICE="${1}"
97                 elif [ -z "${ACTION}" ]; then
98                         ACTION="${1}"
99                 else
100                         OPTIONS="${OPTIONS} ${1}"
101                 fi
102                 shift
103                 ;;
104         esac
105 done
106
107 if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
108         exec env -i USE_UPSTART=$USE_UPSTART LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" ${ACTION} ${OPTIONS}
109 else
110         echo "${SERVICE}: unrecognized service" >&2
111         exit 1
112 fi
This page took 0.06065 seconds and 4 git commands to generate.