rc.local がブート時に実行されない理由を解明するのに苦労しています。
ファイル自体は実行可能で、/etc/rc2.d から呼び出されます。
また、コマンドラインからこのファイルを実行するとエラーは返されません。
実行されない理由を解明するために他に何をチェックすればよいか、何かアイデアはありますか?
答え1
手動で実行すると適切に実行されるとおっしゃっているのでrc.local
、すぐに思い浮かぶのは次の 2 つです。
- 起動時に何か問題が発生していますが、自分で実行すると動作します。起動時に PATH にないプログラムを実行しようとしている可能性があります。
/etc/rc.local
実際には起動時に実行されません。
どちらの場合も、まずは次のようなことを書きます
/usr/bin/printenv > /var/tmp/rc.local-$(date +%T)
rc.local
を 行の後のの最初の行として追加します#!/bin/sh
。これにより、実行されるたびに環境変数がタイムスタンプ付きのファイルに出力されます。(/tmp
起動時に空になるため、ファイルに書き込まないでください。)/etc/rc.local
手動で実行し、結果のファイル( のような名前が付けられます)をざっと見てみましょう/var/tmp/rc.local-21:14:35
。その後、システムを再起動します。
/var/tmp
比較できるファイルが2つあるはずです。最初のファイルだけの場合は、/etc/rc.local
実際には呼び出されません。2つのファイルがある場合は、それらを比較します。後者にはとてもスパース環境と PATH。スクリプトを調べてrc.local
、ブート時の環境にない PATH の変数またはコンポーネントに依存する実行しようとしているものがあるかどうかを確認します。何か見つかった場合は、必要な初期化を追加しますrc.local
。