7

そのため、起動時とシャットダウン時に適切に実行されるように、LSB を満たす init.d スクリプトを作成しようとしています。残念ながら、依存関係を満たすために LSB/update-rc.d に問題があります。

# Required-Start: $network $local_fs hadoop-namenode hadoop-datanode zookeeper-server
# Required-Stop:  $network $local_fs hadoop-namenode hadoop-datanode zookeeper-server
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6

ただし、 update-rc.d defaults を実行すると、関連するデフォルトが生成されるだけで、すでに依存関係とまったく同じ開始時刻になり、事態がひどく壊れます。これを構成するには、update-rc.d または LSB で何か不足していますか?

関連する場合、これはUbuntu 12.04です

4

2 に答える 2

12

ブート シーケンスの後半でスクリプトを実行するには、次のコマンドに98のようなシーケンス番号を追加します。その後、ほとんどの依存関係が満たされます。

かつて、他のブート スクリプトに依存するブート スクリプトを使用する必要がありました。これは多くの問題を引き起こしました。最後に、このコマンドを使用して問題を解決しました。

cd /etc/init.d
sudo update-rc.d my_script defaults 98

98は起動時にシーケンス番号 98 を取得することを意味my_scriptし、それは 1 から 99 までの範囲のように見え、他のほとんどの起動スクリプトはより小さな番号を持っているため、スクリプトがすべての依存関係を準備できるようになります。

ところで、古いスクリプトを削除するには、これを使用できます。

sudo update-rc.d -f my_old_script remove
# -f means 'force'

お役に立てれば。

于 2012-09-20T02:13:22.057 に答える
8

このアプローチは、一部のシステム (Debian Squeeze など) では機能しなくなりました。番号は説明なしで無視されます。推奨される方法は次のとおりです。http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/initscrcomconv.html

「Required-Start:」スクリプト宣言を見てください。

于 2013-04-30T12:57:55.813 に答える