CentOS 中的许多服务看起来像这样(除了绿色和红色):
$ sudo service blah start
Starting blah: [ OK ]
$ sudo service notrunning stop
Stopping notrunning: [FAILED]
发生这种情况的原因是脚本使用了名为和/etc/init.d
中的实用程序脚本。以下是CentOS 中的一段代码:/etc/rc.d/init.d/functions
success
failure
/etc/init.d/sshd
echo -n $"Starting $prog: "
$SSHD $OPTIONS && success || failure
我的问题是:是否有 ubuntu 等效版本?我可以复制脚本,但它们比您想象的要复杂,如果不需要,为什么要重新发明轮子呢?
答案1
我认为您正在寻找的功能源自/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
}
[ ... ]
答案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
for 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