[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