[arch-projects] [INITSCRIPTS][PATCH 3/3] Add an rc helper

Seblu seblu at seblu.net
Thu Apr 21 19:16:30 EDT 2011


On Sat, Apr 16, 2011 at 3:41 AM, Tom Gundersen <teg at jklm.no> wrote:
> 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?
Thanks for the correction. I was not "plugged" last few days. Your
patch looks fine but i've not tested it.

>
> -t
>
> On Sat, Apr 2, 2011 at 11:52 PM, Sebastien Luttringer <seblu at seblu.net> 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 <seblu at seblu.net>
>> ---
>>  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
>>
>>
>



-- 
Sébastien Luttringer
www.seblu.net


More information about the arch-projects mailing list