web-dev-qa-db-ja.com

CentOSの成功/失敗に相当するUbuntu

CentOSの多くのサービスは次のようになります(それぞれ緑と赤を除く):

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

これは、/etc/init.dスクリプトがsuccessおよびfailureと呼ばれる/etc/rc.d/init.d/functionsのユーティリティスクリプトを使用するために発生します。 CentOSの/etc/init.d/sshdのスニペットを次に示します。

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

私の質問は、同等のubuntuはありますか?スクリプトをコピーすることもできますが、それらはあなたが思っているよりも複雑であり、必要がないのになぜ車輪を再発明するのですか?

8
durron597

探している関数は/lib/lsb/init-functionsから供給され、log_success_msglog_failure_msgという名前が付けられていると思います:

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

この出力では、最初の*は灰色で、2番目は赤です(エラーの場合)。非常にカラフルではありません。


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

[ ... ]
7
Volker Siegel

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
2
muru