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はありますか?スクリプトをコピーすることもできますが、それらはあなたが思っているよりも複雑であり、必要がないのになぜ車輪を再発明するのですか?
探している関数は/lib/lsb/init-functions
から供給され、log_success_msg
とlog_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
}
[ ... ]
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