Ubuntu эквивалент CentOS успеха / неудачи

8

Многие сервисы в CentOS выглядят так (кроме зеленого и красного соответственно):

$ sudo service blah start
Starting blah:           [  OK  ]
$ sudo service notrunning stop
Stopping notrunning:     [FAILED]

Это происходит потому, что /etc/init.dскрипты используют служебные скрипты в /etc/rc.d/init.d/functionsвызываемых successи failure. Вот фрагмент из /etc/init.d/sshdCentOS:

echo -n $"Starting $prog: "
$SSHD $OPTIONS && success || failure

Мой вопрос: есть ли эквивалент Ubuntu? Я мог бы скопировать сценарии, но они сложнее, чем вы думаете, и зачем изобретать велосипед, если мне не нужно?

durron597
источник

Ответы:

7

Я думаю, что функции, которые вы ищете, получены /lib/lsb/init-functionsи названы log_success_msgи log_failure_msg:

$ . /lib/lsb/init-functions
$ log_success_msg foo
 * foo
$ log_failure_msg foo 
 * foo

В этом выводе первый *- серый, второй - красный (случай ошибки). Не очень красочно, просто достаточно, чтобы понять суть ...


От /lib/lsb/init-functions:

[ ... ]

log_success_msg () {
    if [ -n "${1:-}" ]; then
        log_begin_msg $@
    fi
    log_end_msg 0
}

log_failure_msg () {
    if [ -n "${1:-}" ]; then
        log_begin_msg $@ "..."
    fi
    log_end_msg 1 || true
}

[ ... ]
Volker Siegel
источник
2

Вы можете использовать функции, предоставляемые lsb-baseпакетом в /lib/lsb/init-functions. Я видел init.dсценарии, использующие этот файл и использующие такие функции, как log_end_msg:

$ (. /lib/lsb/init-functions; log_end_msg 1)
   ...fail!
$ (. /lib/lsb/init-functions; log_end_msg 0)
   ...done.

Например, фрагмент из /etc/init.d/ssh( caseдля start):

if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then
    log_end_msg 0 || true
else
    log_end_msg 1 || true
fi
Мур
источник