[arch-projects] [INITSCRIPTS][PATCH 1/4] Let background daemons show errors on stderr
Daemon running in background should let error output to be printed. Standart output is still hided to have a correct printing in default cases. This will help to detect error in daemon runned in background. This will also remove have_daemon call which is already called in start_daemon. Signed-off-by: Sebastien Luttringer <seblu@seblu.net> --- functions | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/functions b/functions index f42c21e..2048450 100644 --- a/functions +++ b/functions @@ -218,7 +218,7 @@ ck_depends() { start_daemon_bkgd() { stat_bkgd "Starting $1" - have_daemon "$1" && (start_daemon "$1") &>/dev/null & + (start_daemon "$1") >/dev/null & } stop_daemon() { -- Sebastien "Seblu" Luttringer
Signed-off-by: Sebastien Luttringer <seblu@seblu.net> --- hwclock | 6 +----- 1 files changed, 1 insertions(+), 5 deletions(-) diff --git a/hwclock b/hwclock index 5996b95..9c05843 100755 --- a/hwclock +++ b/hwclock @@ -13,11 +13,7 @@ case "$1" in start) add_daemon hwclock;; stop) - case $HARDWARECLOCK in - UTC) hwclock --adjust --utc;; - localtime) hwclock --adjust --localtime;; - "") hwclock --adjust;; - esac + hwclock --adjust $HWCLOCK_PARAMS rm_daemon hwclock ;; restart) -- Sebastien "Seblu" Luttringer
Signed-off-by: Sebastien Luttringer <seblu@seblu.net> --- rc.d | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/rc.d b/rc.d index a7b214e..3d34edf 100755 --- a/rc.d +++ b/rc.d @@ -69,7 +69,7 @@ case $1 in if [[ -x "/etc/rc.d/$i" ]]; then env -i "${ENV[@]}" "/etc/rc.d/$i" "$action" else - printf "${C_OTHER}:: ${C_FAIL}Error: ${C_DONE}Daemon script $i does not exist.${C_CLEAR}\n" + printf "${C_FAIL}:: ${C_DONE}No such daemon ${C_FAIL}$i${C_CLEAR}\n" fi (( ret += !! $? )) # clamp exit value to 0/1 done -- Sebastien "Seblu" Luttringer
list command can take new arguments auto/noauto. list command can take a list of daemon to list. All kind of arguments can be mixed to obtain the proper output. zsh and bash completion are updated Signed-off-by: Sebastien Luttringer <seblu@seblu.net> --- bash-completion | 2 +- rc.d | 65 +++++++++++++++++++++++++++++++++++++----------------- zsh-completion | 2 +- 3 files changed, 46 insertions(+), 23 deletions(-) diff --git a/bash-completion b/bash-completion index d78484e..718df6d 100644 --- a/bash-completion +++ b/bash-completion @@ -10,7 +10,7 @@ _rc_d() elif [[ "$prev" == help ]]; then COMPREPLY=() elif [[ "$prev" == list ]]; then - ((COMP_CWORD == 2)) && COMPREPLY=($(compgen -W "started stopped" -- "$cur")) || COMPREPLY=() + COMPREPLY=($(compgen -W "started stopped auto noauto $(cd /etc/rc.d && compgen -f -X 'functions*')" -- "$cur")) elif [[ "$prev" == start ]]; then COMPREPLY=($(comm -23 <(cd /etc/rc.d && compgen -f -X 'functions*' "$cur"|sort) <(cd /run/daemons/ && compgen -f "$cur"|sort))) elif [[ "$prev" =~ stop|restart|reload ]]; then diff --git a/rc.d b/rc.d index 3d34edf..bb44ae1 100755 --- a/rc.d +++ b/rc.d @@ -4,11 +4,12 @@ NEED_ROOT=0 # this script can be run without be root . /etc/rc.conf . /etc/rc.d/functions +# print usage and exit usage() { local name=${0##*/} cat >&2 << EOF usage: $name <action> <daemon> [daemon] ... - $name list [started|stopped] + $name list [started|stopped|auto|noauto|daemon] $name help <daemon> is the name of a script in /etc/rc.d @@ -17,40 +18,62 @@ WARNING: initscripts are free to implement or not the above actions. e.g: $name list $name list started + $name list sshd gpm $name help $name start sshd gpm EOF exit 1 } +# list action +list() { + local mode daemons s_status s_auto + # parse arguments + for p; do + case "$p" in + started) mode=started;; + stopped) mode=stopped;; + auto) mode=auto;; + noauto) mode=noauto;; + *) daemons="$daemons $p";; + esac + done + # if no daemon are specified take all + [[ $daemons ]] || daemons=$(cd /etc/rc.d/ && echo *) + # building string to display + for d in $daemons; do + # check if d is a valid daemon name + have_daemon "$d" || continue + # print running / stopped satus + if ! ck_daemon "$d"; then + [[ $mode == stopped ]] && continue + s_status="${C_OTHER}[${C_DONE}STARTED${C_OTHER}]" + else + [[ $mode == started ]] && continue + s_status="${C_OTHER}[${C_FAIL}STOPPED${C_OTHER}]" + fi + # print auto / manual status + if ! ck_autostart "$d"; then + [[ $mode == noauto ]] && continue + s_auto="${C_OTHER}[${C_DONE}AUTO${C_OTHER}]" + else + [[ $mode == auto ]] && continue + s_auto="${C_OTHER}[${C_FAIL} ${C_OTHER}]" + fi + printf "$s_status$s_auto${C_CLEAR} $d\n" + done +} + (( $# < 1 )) && usage declare -i ret=0 case $1 in help) usage - ;; + ;; list) shift - cd /etc/rc.d/ - for d in *; do - have_daemon "$d" || continue - # print running / stopped satus - if ! ck_daemon "$d"; then - [[ "$1" == stopped ]] && continue - printf "${C_OTHER}[${C_DONE}STARTED${C_OTHER}]" - else - [[ "$1" == started ]] && continue - 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_CLEAR}$d\n" - done + list "$@" ;; *) # check min args count diff --git a/zsh-completion b/zsh-completion index e5c2850..b324e5c 100644 --- a/zsh-completion +++ b/zsh-completion @@ -19,7 +19,7 @@ _rc.d () { _arguments "*: :" ;; list) - _arguments "2: :(started stopped)" + _arguments "*: :(started stopped auto noauto $(echo /etc/rc.d/*(N-*:t)))" ;; start) _arguments "*: :($(comm -23 <(echo /etc/rc.d/*(N-*:t)|tr ' ' '\n') <(echo /run/daemons/*(N:t)|tr ' ' '\n')))" -- Sebastien "Seblu" Luttringer
Ah, I was just procrastinating about not having updated the patch to add a manpage for rc.d that I sent a while back. Now it seems I'll have to extend/rewrite it a bit anyway ;) I'll do that as soon as I can, a bit busy finishing up my gsoc work atm. Cheers, Elvis 2011/8/9 Sebastien Luttringer <seblu@seblu.net>:
list command can take new arguments auto/noauto. list command can take a list of daemon to list.
All kind of arguments can be mixed to obtain the proper output.
zsh and bash completion are updated
Signed-off-by: Sebastien Luttringer <seblu@seblu.net> --- bash-completion | 2 +- rc.d | 65 +++++++++++++++++++++++++++++++++++++----------------- zsh-completion | 2 +- 3 files changed, 46 insertions(+), 23 deletions(-)
diff --git a/bash-completion b/bash-completion index d78484e..718df6d 100644 --- a/bash-completion +++ b/bash-completion @@ -10,7 +10,7 @@ _rc_d() elif [[ "$prev" == help ]]; then COMPREPLY=() elif [[ "$prev" == list ]]; then - ((COMP_CWORD == 2)) && COMPREPLY=($(compgen -W "started stopped" -- "$cur")) || COMPREPLY=() + COMPREPLY=($(compgen -W "started stopped auto noauto $(cd /etc/rc.d && compgen -f -X 'functions*')" -- "$cur")) elif [[ "$prev" == start ]]; then COMPREPLY=($(comm -23 <(cd /etc/rc.d && compgen -f -X 'functions*' "$cur"|sort) <(cd /run/daemons/ && compgen -f "$cur"|sort))) elif [[ "$prev" =~ stop|restart|reload ]]; then diff --git a/rc.d b/rc.d index 3d34edf..bb44ae1 100755 --- a/rc.d +++ b/rc.d @@ -4,11 +4,12 @@ NEED_ROOT=0 # this script can be run without be root . /etc/rc.conf . /etc/rc.d/functions
+# print usage and exit usage() { local name=${0##*/} cat >&2 << EOF usage: $name <action> <daemon> [daemon] ... - $name list [started|stopped] + $name list [started|stopped|auto|noauto|daemon] $name help
<daemon> is the name of a script in /etc/rc.d @@ -17,40 +18,62 @@ WARNING: initscripts are free to implement or not the above actions.
e.g: $name list $name list started + $name list sshd gpm $name help $name start sshd gpm EOF exit 1 }
+# list action +list() { + local mode daemons s_status s_auto + # parse arguments + for p; do + case "$p" in + started) mode=started;; + stopped) mode=stopped;; + auto) mode=auto;; + noauto) mode=noauto;; + *) daemons="$daemons $p";; + esac + done + # if no daemon are specified take all + [[ $daemons ]] || daemons=$(cd /etc/rc.d/ && echo *) + # building string to display + for d in $daemons; do + # check if d is a valid daemon name + have_daemon "$d" || continue + # print running / stopped satus + if ! ck_daemon "$d"; then + [[ $mode == stopped ]] && continue + s_status="${C_OTHER}[${C_DONE}STARTED${C_OTHER}]" + else + [[ $mode == started ]] && continue + s_status="${C_OTHER}[${C_FAIL}STOPPED${C_OTHER}]" + fi + # print auto / manual status + if ! ck_autostart "$d"; then + [[ $mode == noauto ]] && continue + s_auto="${C_OTHER}[${C_DONE}AUTO${C_OTHER}]" + else + [[ $mode == auto ]] && continue + s_auto="${C_OTHER}[${C_FAIL} ${C_OTHER}]" + fi + printf "$s_status$s_auto${C_CLEAR} $d\n" + done +} + (( $# < 1 )) && usage
declare -i ret=0 case $1 in help) usage - ;; + ;; list) shift - cd /etc/rc.d/ - for d in *; do - have_daemon "$d" || continue - # print running / stopped satus - if ! ck_daemon "$d"; then - [[ "$1" == stopped ]] && continue - printf "${C_OTHER}[${C_DONE}STARTED${C_OTHER}]" - else - [[ "$1" == started ]] && continue - 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_CLEAR}$d\n" - done + list "$@" ;; *) # check min args count diff --git a/zsh-completion b/zsh-completion index e5c2850..b324e5c 100644 --- a/zsh-completion +++ b/zsh-completion @@ -19,7 +19,7 @@ _rc.d () { _arguments "*: :" ;; list) - _arguments "2: :(started stopped)" + _arguments "*: :(started stopped auto noauto $(echo /etc/rc.d/*(N-*:t)))" ;; start) _arguments "*: :($(comm -23 <(echo /etc/rc.d/*(N-*:t)|tr ' ' '\n') <(echo /run/daemons/*(N:t)|tr ' ' '\n')))" -- Sebastien "Seblu" Luttringer
On Fri, Aug 12, 2011 at 6:59 PM, Elvis Stansvik <elvstone@gmail.com> wrote:
Ah, I was just procrastinating about not having updated the patch to add a manpage for rc.d that I sent a while back. Now it seems I'll have to extend/rewrite it a bit anyway ;)
I'll do that as soon as I can, a bit busy finishing up my gsoc work atm. Yeah i searched it when i wrote bash/zsh copletion scripts to update it.
Cheers, Elvis
2011/8/9 Sebastien Luttringer <seblu@seblu.net>:
list command can take new arguments auto/noauto. list command can take a list of daemon to list.
All kind of arguments can be mixed to obtain the proper output.
zsh and bash completion are updated
Signed-off-by: Sebastien Luttringer <seblu@seblu.net> --- bash-completion | 2 +- rc.d | 65 +++++++++++++++++++++++++++++++++++++----------------- zsh-completion | 2 +- 3 files changed, 46 insertions(+), 23 deletions(-)
diff --git a/bash-completion b/bash-completion index d78484e..718df6d 100644 --- a/bash-completion +++ b/bash-completion @@ -10,7 +10,7 @@ _rc_d() elif [[ "$prev" == help ]]; then COMPREPLY=() elif [[ "$prev" == list ]]; then - ((COMP_CWORD == 2)) && COMPREPLY=($(compgen -W "started stopped" -- "$cur")) || COMPREPLY=() + COMPREPLY=($(compgen -W "started stopped auto noauto $(cd /etc/rc.d && compgen -f -X 'functions*')" -- "$cur")) elif [[ "$prev" == start ]]; then COMPREPLY=($(comm -23 <(cd /etc/rc.d && compgen -f -X 'functions*' "$cur"|sort) <(cd /run/daemons/ && compgen -f "$cur"|sort))) elif [[ "$prev" =~ stop|restart|reload ]]; then diff --git a/rc.d b/rc.d index 3d34edf..bb44ae1 100755 --- a/rc.d +++ b/rc.d @@ -4,11 +4,12 @@ NEED_ROOT=0 # this script can be run without be root . /etc/rc.conf . /etc/rc.d/functions
+# print usage and exit usage() { local name=${0##*/} cat >&2 << EOF usage: $name <action> <daemon> [daemon] ... - $name list [started|stopped] + $name list [started|stopped|auto|noauto|daemon] $name help
<daemon> is the name of a script in /etc/rc.d @@ -17,40 +18,62 @@ WARNING: initscripts are free to implement or not the above actions.
e.g: $name list $name list started + $name list sshd gpm $name help $name start sshd gpm EOF exit 1 }
+# list action +list() { + local mode daemons s_status s_auto + # parse arguments + for p; do + case "$p" in + started) mode=started;; + stopped) mode=stopped;; + auto) mode=auto;; + noauto) mode=noauto;; + *) daemons="$daemons $p";; + esac + done + # if no daemon are specified take all + [[ $daemons ]] || daemons=$(cd /etc/rc.d/ && echo *) + # building string to display + for d in $daemons; do + # check if d is a valid daemon name + have_daemon "$d" || continue + # print running / stopped satus + if ! ck_daemon "$d"; then + [[ $mode == stopped ]] && continue + s_status="${C_OTHER}[${C_DONE}STARTED${C_OTHER}]" + else + [[ $mode == started ]] && continue + s_status="${C_OTHER}[${C_FAIL}STOPPED${C_OTHER}]" + fi + # print auto / manual status + if ! ck_autostart "$d"; then + [[ $mode == noauto ]] && continue + s_auto="${C_OTHER}[${C_DONE}AUTO${C_OTHER}]" + else + [[ $mode == auto ]] && continue + s_auto="${C_OTHER}[${C_FAIL} ${C_OTHER}]" + fi + printf "$s_status$s_auto${C_CLEAR} $d\n" + done +} + (( $# < 1 )) && usage
declare -i ret=0 case $1 in help) usage - ;; + ;; list) shift - cd /etc/rc.d/ - for d in *; do - have_daemon "$d" || continue - # print running / stopped satus - if ! ck_daemon "$d"; then - [[ "$1" == stopped ]] && continue - printf "${C_OTHER}[${C_DONE}STARTED${C_OTHER}]" - else - [[ "$1" == started ]] && continue - 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_CLEAR}$d\n" - done + list "$@" ;; *) # check min args count diff --git a/zsh-completion b/zsh-completion index e5c2850..b324e5c 100644 --- a/zsh-completion +++ b/zsh-completion @@ -19,7 +19,7 @@ _rc.d () { _arguments "*: :" ;; list) - _arguments "2: :(started stopped)" + _arguments "*: :(started stopped auto noauto $(echo /etc/rc.d/*(N-*:t)))" ;; start) _arguments "*: :($(comm -23 <(echo /etc/rc.d/*(N-*:t)|tr ' ' '\n') <(echo /run/daemons/*(N:t)|tr ' ' '\n')))" -- Sebastien "Seblu" Luttringer
-- Sébastien Luttringer www.seblu.net
participants (3)
-
Elvis Stansvik
-
Sebastien Luttringer
-
Seblu