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