Ubuntu odpowiada sukcesowi / porażce CentOS


8

Wiele usług w CentOS wygląda tak (z wyjątkiem odpowiednio zielonego i czerwonego):

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

Dzieje się tak, ponieważ /etc/init.dskrypty używają skryptów narzędziowych w /etc/rc.d/init.d/functionsnazwanych successi failure. Oto fragment z /etc/init.d/sshdCentOS:

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

Moje pytanie brzmi: czy istnieje odpowiednik ubuntu? Mógłbym skopiować skrypty, ale są one bardziej skomplikowane, niż myślisz, i po co wymyślać koło, jeśli nie muszę?

Odpowiedzi:


7

Myślę, że funkcje, których szukasz, pochodzą z /lib/lsb/init-functions, są nazwane log_success_msgi log_failure_msg:

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

Na tym wyjściu pierwszy *jest szary, drugi jest czerwony (przypadek błędu). Niezwykle kolorowe, wystarczy, aby przejść przez ...


Od /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
}

[ ... ]

2

Możesz użyć funkcji dostarczonych przez lsb-basepakiet w /lib/lsb/init-functions. Widziałem init.dskrypty pozyskujące ten plik, a następnie korzystające z funkcji, takich jak log_end_msg:

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

Na przykład fragment kodu /etc/init.d/ssh( casedla 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.