web-dev-qa-db-ja.com

`rc.local`の最後に` exit 0`が*必要*ですか?

rc.localの終了コードの目的は何ですか?私はそれなしでうまく実行するようです。ヘッダーは次のとおりです。

#!/bin/sh -e
#
# rc.local - executed at the end of each multiuser runlevel
#
# Make sure that the script will "exit 0" on success or any other
# value on error.

戻りコードを確認するのは誰ですか?とにかくデフォルトは0ですか?

6
tarabyte

「常にexit 0 "。改行せずにもう一度読みます。

スクリプトが成功した場合は「0」で終了し、エラーの場合はその他の値で終了することを確認してください。

  • 成功を示すには、0を終了します。
  • エラーを示すには、他の値を終了します。

ステータスをチェックするものは必ずしも必要ではありませんが、一部の初期化システムでは、ユーザーの画面に「[OK]」または「[FAIL]」が表示されます。いずれの場合も、スクリプトが意味のある戻りコードで終了するようにすることをお勧めします。

他のスクリプトと同様に、デフォルトの終了ステータスは、スクリプトで実行された最後のコマンドの終了ステータスになります。

7
bahamat

スクリプトの最後に_exit 0_は必要ありません。

_locate rc.local | grep -vF /etc/rc.local_を実行して、/ etc/rc.localの呼び出しとその終了コードの調査に関連する可能性のあるファイルを見つけます。

/etc/init.d/rc.localは、私のXubuntu 15.10ではこのようなinitスクリプトのようです。「$ VERBOSE」変数が「no」でない場合、終了コードを取得し、その値を使用して何かをログに記録しているようです。

echo "$(ps -o args= $PPID)" >/tmp/callerを/etc/rc.localに置くと、起動時に呼び出し元の名前がファイル/ tmp/callerに書き込まれます。私のXubuntu 15.10システムでは、 "/ sbin/init persistent splash"です。

0
jarno