service

技术文档 - Linux 作者: xcheng1986 发布于:2016-07-13 阅读(455) (暂无评论)  

cat /sbin/service
#!/bin/sh

. /etc/init.d/functions

VERSION="$(basename $0) ver. 0.91"
USAGE="Usage: $(basename $0) < option > | --status-all | \
[ service_name [ command | --full-restart ] ]"
SERVICE=
SERVICEDIR="/etc/init.d"
OPTIONS=

if [ $# -eq 0 ]; then
	echo "${USAGE}" >&2
	exit 1
fi

cd /
while [ $# -gt 0 ]; do
case "${1}" in
	--help | -h | --h* )
		echo "${USAGE}" >&2
		exit 0
		;;
	--version | -V )
		echo "${VERSION}" >&2
		exit 0
		;;
	*)
		if [ -z "${SERVICE}" -a $# -eq 1 -a "${1}" = "--status-all" ]; then
			cd ${SERVICEDIR}
			for SERVICE in * ; do
				case "${SERVICE}" in
					functions | halt | killall | single| linuxconf| kudzu)
					;;
					*)
						if ! is_ignored_file "${SERVICE}" \
								&& [ -x "${SERVICEDIR}/${SERVICE}" ]; then
							env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" status
						fi
					;;
				esac
			done
			exit 0
		elif [ $# -eq 2 -a "${2}" = "--full-restart" ]; then
			SERVICE="${1}"
			if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
				env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" stop
				env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" start
				exit $?
			fi
		elif [ -z "${SERVICE}" ]; then
			SERVICE="${1}"
		else
			OPTIONS="${OPTIONS} ${1}"
		fi
	shift
	;;
esac
done

if [ -f "${SERVICEDIR}/${SERVICE}" ]; then
	env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" ${OPTIONS}
else
	echo $"${SERVICE}: unrecognized service" >&2
	exit 1
fi