これはstackoverflowから移行された質問です。私が言われたように、これはそれがあるべき場所です。 https://stackoverflow.com/questions/2263567/how-to-conform-to-update-rc-d-with-lsb-standard
一部のディレクトリをバックアップする簡単なスクリプトを設定しました。機能の設定に問題はありませんでしたが、update-rc.d
を使用してrcX.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] [...] .
Googleは解決策を見つけるのにそれほど役に立ちませんでした。スクリプトを正しく設定して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)を使用すると、より適切に機能します。