这是从 stackoverflow 迁移的问题,正如我被告知的那样,这就是它的所在。 https://stackoverflow.com/questions/2263567/how-to-conform-to-update-rc-d-with-lsb-standard
我已经设置了一个简单的脚本来备份一些目录。虽然我在设置功能时没有遇到任何问题,但我仍然坚持将脚本添加到 rcX.d 目录的 using update-rc.d
.
我的脚本:
#! /bin/sh
### BEGIN INIT INFO
# Provides: backup
# Required-Start: backup
# Required-Stop:
# Should-Stop:
# Default-Start: 0 6
# Default-Stop:
# Description: Backs up some dirs
### END INIT INFO
check_mounted() {
# Check if HD is mounted
}
do_backup() {
if check_mounted; then
# Some rsync statements.
fi
}
case "$1" in
start)
do_backup
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop|"")
# No-op
;;
*)
echo "Usage: backup [start]" >&2
exit 3
;;
esac
:
使用update-rc.d backup start 10 0 6 .
我得到以下警告和错误:
update-rc.d: warning: backup start runlevel arguments (none) do not match LSB Default-Start values (0 6)
update-rc.d: warning: backup stop runlevel arguments (0 6.) do not match LSB Default-Stop values (none)
update-rc.d: error: start|stop arguments not terminated by "."
我尝试使用的语法如下:
update-rc.d [-n] <basename> start|stop NN runlvl [runlvl] [...] .
谷歌在寻找解决方案方面并没有那么大的帮助。如何正确设置脚本并通过 update-rc.d 添加它?
我正在使用 Ubuntu 9.10。
更新
使用update-rc.d backup start 10 0 6 . stop 10 0 .
错误消失。关于默认值的警告仍然存在:
update-rc.d: warning: backup start runlevel arguments (none) do not match LSB Default-Start values (0 6)
update-rc.d: warning: backup stop runlevel arguments (0 6 0 6) do not match LSB Default-Stop values (none)
它甚至被添加到适当的 rcX-dirs 但它仍然没有被执行......
在运行级别 0 或 6 中启动服务是没有意义的,它们分别是关闭和重新启动的级别。update-rc.d 中显然有一些魔法试图阻止这种情况并在这种情况下错误解析参数。如果您在开始时使用更合理的运行级别(可能是 2 3 4 5),它会更好地工作。