I'm about to push this patch, but there is a bug. "rc list" will not show "AUTO" on daemons that are started in the background. I fixed it here: <https://github.com/teg/initscripts-arch/commit/2800e50847f3217b60eb07138c7f6fda05467616>, could you check that it is correct?
-t On Sat, Apr 2, 2011 at 11:52 PM, Sebastien Luttringer <[email protected]> wrote: > This is allow a quick calling to /etc/rc.d scripts by calling a shell command. > By example, starting sshd and gpm can be done by typing: rc start sshd gpm > rc can also list available scripts and show which is started/stopped in > DAEMONS > > Signed-off-by: Sebastien Luttringer <[email protected]> > --- > functions | 9 +++++++++ > install.sh | 2 ++ > rc | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 62 insertions(+), 0 deletions(-) > create mode 100755 rc > > diff --git a/functions b/functions > index 8a191e6..e0f3bec 100644 > --- a/functions > +++ b/functions > @@ -175,6 +175,15 @@ have_daemon() { > [[ -f /etc/rc.d/$1 && -x /etc/rc.d/$1 ]] > } > > +# Check if $1 is started at boot > +ck_autostart() { > + local d > + for d in "${DAEMONS[@]}"; do > + [[ "$1" = $d ]] && return 1 > + done > + return 0 > +} > + > start_daemon() { > have_daemon "$1" && /etc/rc.d/"$1" start > } > diff --git a/install.sh b/install.sh > index 8e6c3d7..c70a10e 100755 > --- a/install.sh > +++ b/install.sh > @@ -21,3 +21,5 @@ done > > gcc $CFLAGS -o minilogd minilogd.c || exit 1 > install -D -m755 minilogd ${DESTDIR}/sbin/minilogd || exit 1 > + > +install -D -m755 rc ${DESTDIR}/sbin/rc || exit 1 > diff --git a/rc b/rc > new file mode 100755 > index 0000000..4bb9730 > --- /dev/null > +++ b/rc > @@ -0,0 +1,51 @@ > +#!/bin/bash > + > +. /etc/rc.conf > +. /etc/rc.d/functions > + > +usage() { > + cat >&2 << EOF > +usage: rc action daemon ... > + > +e.g: rc list > + rc help > + rc start sshd gpm > +EOF > +} > + > +(( $# < 1 )) && usage && exit 1 > + > +case $1 in > + help) > + usage > + ;; > + list) > + cd /etc/rc.d/ > + for d in *; do > + have_daemon "$d" || continue > + # print running / stopped satus > + if ! ck_daemon "$d"; then > + printf "${C_OTHER}[${C_DONE}STARTED${C_OTHER}]" > + else > + printf "${C_OTHER}[${C_FAIL}STOPPED${C_OTHER}]" > + fi > + # print auto / manual status > + if ! ck_autostart "$d"; then > + printf "${C_OTHER}[${C_DONE}AUTO${C_OTHER}]" > + else > + printf "${C_OTHER}[${C_FAIL} ${C_OTHER}]" > + fi > + printf " ${C_MAIN}$d${C_CLEAR}\n" > + done > + ;; > + *) > + action=$1 > + shift > + for i; do > + [[ -x "/etc/rc.d/$i" ]] && "/etc/rc.d/$i" $action > + done > +esac > + > +true > + > +# vim: set ts=2 sw=2 noet: > -- > Sebastien Seblu Luttringer > >
