home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
boot
/
i386
/
rescue
/
sbin
/
service
< prev
next >
Wrap
Text File
|
2006-11-29
|
3KB
|
142 lines
#!/bin/sh
#
# /sbin/service Handle boot and runlevel services
#
#
# Only root should do
#
if test "$(id -u)" -ne 0; then
echo "${0##*/}: only root can use ${0##*/}" 1>&2
exit 1
fi
#
# Location of our service scripts
#
RCDIR="/etc/init.d"
#
# Clean environment
#
PATH=/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
test -n "$TERM" || TERM=raw
LANG=POSIX
export PATH TERM LANG
exec_rc ()
{
env -i LANG=$LANG PATH=$PATH TERM=$TERM ${1+"$@"}
}
usage ()
{
echo "Usage: ${0##*/} [--help | --status-all | <service> [<args>| --full-restart]]" 1>&2
exit 1
}
help ()
{
echo "Usage: ${0##*/} [<options> | <service> [<args> | --full-restart]]"
echo "Available <options>:"
echo " -h,--help This help."
echo " -s,--status-all List out status of all services."
echo "Usage for specific <service>:"
echo " ${0##*/} service_name argument [option]"
echo " ${0##*/} service_name --full-restart"
echo " ${0##*/} --full-restart service_name"
exit 0
}
status_all=0
full_restart=0
args=""
while test $# -gt 0; do
opt=
if test "${1::1}" = "-"; then
if test ${#1} -gt 2 -a "${1::2}" = "--" ; then
opt="${1:2}"
else
opt="${1:1}"
fi
shift
else
args="${args:+$args }$1"
shift
continue
fi
case "$opt" in
status-all|s) status_all=1 ;;
full-restart) full_restart=1 ;;
h*) help ;;
*) usage ;;
esac
done
#
# Determine the status of all services
#
if test $status_all -gt 0 ; then
if test -n "$args" ; then
usage 1>&2
exit 1
fi
for rc in ${RCDIR}/*; do
test ! -x "$rc" -o -d "$rc" && continue
case "${rc##*/}" in
*.local|*.rpm*|*.ba*|*.old|*.new) continue ;;
*.dpkg|*.save|*.swp|*.core) continue ;;
boot|rc|single|halt|reboot) continue ;;
powerfail|rx|Makefile|README) continue ;;
skeleton|*.d) continue ;;
esac
exec_rc $rc status
done
exit 0
fi
#
# Do a full restart of a few services
#
if test $full_restart -gt 0 ; then
if test -z "$args" ; then
usage 1>&2
exit 1
fi
for rc in $args; do
if test ! -x ${RCDIR}/$rc ; then
echo "${0##*/}: no such service $rc" 1>&2
exit 1
fi
done
status=0
for rc in $args; do
rc=${RCDIR}/$rc
exec_rc $rc stop
exec_rc $rc start
test $? -gt 0 && status=1
done
exit $status
fi
#
# Execute single service with options
#
if test -z "${args}" ; then
usage 1>&2
exit 1
fi
set -- $args
if test ! -x ${RCDIR}/$1 ; then
echo "${0##*/}: no such service $1" 1>&2
exit 1
fi
rc=${RCDIR}/$1
shift
exec_rc $rc ${1+"$@"}
exit $?