Package: sysvinit-utils Version: 2.86.ds1-61 Severity: wishlist Tags: patch User: ubuntu-de...@lists.ubuntu.com Usertags: ubuntu-patch origin-ubuntu karmic
Hi guys, Please find attached a patch from the Ubuntu sysvinit-utils package that adds a 'service' command and manpage. This implies conflicts with the chkconfig and sysvconfig packages, which also implement this command, but we should really move it more centrally and make it a standard interface. -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ slanga...@ubuntu.com vor...@debian.org
Index: debian/control =================================================================== --- debian/control (revision 1332) +++ debian/control (working copy) @@ -26,15 +26,15 @@ Package: sysvinit-utils Essential: yes Architecture: any -Conflicts: last -Replaces: last, sysvinit (<= 2.86.ds1-22) +Conflicts: last, sysvconfig, chkconfig +Replaces: last, sysvinit (<= 2.86.ds1-22), sysvconfig, chkconfig Depends: ${shlibs:Depends} Suggests: sash Description: System-V-like utilities This package contains the important System-V-like utilities. . Specifically, this package includes: - killall5, last, lastb, mesg, pidof, sulogin + killall5, last, lastb, mesg, pidof, service, sulogin Package: sysv-rc Architecture: all Index: debian/rules =================================================================== --- debian/rules (revision 1332) +++ debian/rules (working copy) @@ -110,6 +110,7 @@ rm -f $(tmp)/usr/share/man/man1/last.1 rm -f $(tmp)/usr/share/man/man1/lastb.1 rm -f $(tmp)/usr/share/man/man1/mesg.1 + rm -f $(tmp)/usr/share/man/man8/service.8 rm -f $(tmp)/usr/share/man/man8/pidof.8 rm -f $(tmp)/usr/share/man/man1/mountpoint.1 rm -f $(tmp)/sbin/killall5 @@ -117,6 +118,7 @@ rm -f $(tmp)/usr/bin/last rm -f $(tmp)/usr/bin/lastb rm -f $(tmp)/usr/bin/mesg + rm -f $(tmp)/usr/sbin/service rm -f $(tmp)/bin/pidof rm -f $(tmp)/bin/mountpoint rmdir $(tmp)/usr/share/man/man1 @@ -152,6 +154,7 @@ install -o root -g root -m 755 src/sulogin $(tmp)/sbin install -o root -g root -m 755 src/last $(tmp)/usr/bin install -o root -g root -m 755 src/mesg $(tmp)/usr/bin + install -o root -g root -m 755 debian/service/sbin/service $(tmp)/usr/sbin strip -s -R .comment $(tmp)/sbin/killall5 strip -s -R .comment $(tmp)/sbin/sulogin strip -s -R .comment $(tmp)/usr/bin/last @@ -163,6 +166,7 @@ install -o root -g root -m 644 man/last.1 $(tmp)/usr/share/man/man1 install -o root -g root -m 644 man/lastb.1 $(tmp)/usr/share/man/man1 install -o root -g root -m 644 man/mesg.1 $(tmp)/usr/share/man/man1 + install -o root -g root -m 644 debian/service/man8/service.8 $(tmp)/usr/share/man/man8 install -o root -g root -m 644 man/pidof.8 $(tmp)/usr/share/man/man8 gzip -9f $(tmp)/usr/share/man/man*/*.[0-9] install -o root -g root -m 644 debian/copyright \ Index: debian/service/man8/service.8 =================================================================== --- debian/service/man8/service.8 (revision 0) +++ debian/service/man8/service.8 (revision 0) @@ -0,0 +1,76 @@ +.\" A man page for service(8). -*- nroff -*- +.\" +.\" Copyright (C) 2006 Red Hat, Inc. All rights reserved. +.\" +.\" This copyrighted material is made available to anyone wishing to use, +.\" modify, copy, or redistribute it subject to the terms and conditions of the +.\" GNU General Public License v.2. +.\" +.\" This program is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +.\" more details. +.\" +.\" You should have received a copy of the GNU General Public License along +.\" with this program; if not, write to the Free Software Foundation, Inc., +.\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +.\" +.\" Author: Miloslav Trmac <m...@redhat.com> +.TH service 8 "Jan 2006" + +.SH NAME +service \- run a System V init script + +.SH SYNOPSIS +\fBservice\fR \fISCRIPT\fR \fICOMMAND\fR [\fIOPTIONS\fR] + +\fBservice \-\-status\-all\fR + +\fBservice\fR \fB\-\-help\fR | \fB\-h\fR | \fB\-\-version\fR + +.SH DESCRIPTION +.B service +runs a System V init script in as predictable environment as possible, +removing most environment variables +and with current working directory set to \fB/\fR. + +The +.I SCRIPT +parameter specifies a System V init script, +located in \fB/etc/init.d/\fISCRIPT\fR. +The supported values of +.I COMMAND +depend on the invoked script, +.B service +passes +.I COMMAND +and +.I OPTIONS +it to the init script unmodified. +All scripts should support at least the +.B start +and +.B stop +commands. +As a special case, if +.I COMMAND +is \fB\-\-full-restart\fR, the script is run twice, first with the +.B stop +command, then with the +.B start +command. + +.B service \-\-status\-all +runs all init scripts, in alphabetical order, with the +.B status +command. + +.SH FILES +.TP +\fB/etc/init.d\fR +The directory containing System V init scripts. + +.SH ENVIRONMENT +.TP +\fBLANG\fR, \fBTERM\fR +The only environment variables passed to the init scripts. Index: debian/service/sbin/service =================================================================== --- debian/service/sbin/service (revision 0) +++ debian/service/sbin/service (revision 0) @@ -0,0 +1,120 @@ +#!/bin/sh + +########################################################################### +# /usr/bin/service +# +# A convenient wrapper for the /etc/init.d init scripts. +# +# This script is a modified version of the /sbin/service utility found on +# Red Hat/Fedora systems (licensed GPLv2+). +# +# Copyright (C) 2006 Red Hat, Inc. All rights reserved. +# Copyright (C) 2008 Canonical Ltd. +# * August 2008 - Dustin Kirkland <kirkl...@canonical.com> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# On Debian GNU/Linux systems, the complete text of the GNU General +# Public License can be found in `/usr/share/common-licenses/GPL'. +########################################################################### + + +is_ignored_file() { + case "$1" in + skeleton | README | *.dpkg-dist | *.dpkg-old | rc | rcS | single | reboot | bootclean.sh) + return 0 + ;; + esac + return 1 +} + +VERSION="`basename $0` ver. 0.91-ubuntu1" +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 + if ! grep -qs "\Wstatus)" "$SERVICE"; then + #printf " %s %-60s %s\n" "[?]" "$SERVICE:" "unknown" 1>&2 + echo " [ ? ] $SERVICE" 1>&2 + continue + else + out=$(env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status 2>&1) + if [ "$?" = "0" -a -n "$out" ]; then + #printf " %s %-60s %s\n" "[+]" "$SERVICE:" "running" + echo " [ + ] $SERVICE" + continue + else + #printf " %s %-60s %s\n" "[-]" "$SERVICE:" "NOT running" + echo " [ - ] $SERVICE" + continue + fi + fi + #env -i LANG="$LANG" 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 LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" stop + env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" start + exit $? + fi + elif [ -z "${SERVICE}" ]; then + SERVICE="${1}" + else + OPTIONS="${OPTIONS} ${1}" + fi + shift + ;; + esac +done + +if [ -x "${SERVICEDIR}/${SERVICE}" ]; then + env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" ${OPTIONS} +else + echo $"${SERVICE}: unrecognized service" >&2 + exit 1 +fi
signature.asc
Description: Digital signature