事例: /etc/rc.localが途中までしか実行されない

スポンサーリンク

事例: /etc/rc.localが途中までしか実行されない

事例が確認された環境

Ubuntu Linux 16.04

状況

/etc/rc.localに追記したところ、コマンドが途中までしか実行されない。

状況の確認方法

# journalctlにてログを確認。

解決方法

行を確実に実行したい場合は、hoge_cmd || trueのように、必ず真の値を返すようにする。

原因

/etc/rc.localは、その一行目の記述から、/bin/sh -eで実行されることになっている。-eオプションは、スクリプトの実行中に返り値0以外の行に遭遇すると、スクリプトの実行をそこで打ち切ってしまう。

例えば、

mkdir DirectoryFoo/
touch DirectoryFoo/index.html

のように追記した場合、DirectoryFooがすでに存在していてmkdirが失敗した場合、touch DirectoryFoo/index.htmlは実行されない。このように、実行して失敗しても構わないようなコマンドがrc.localに含まれている場合に、途中まで実行されないのは具合が良くない。
※なおこの場合に限って言えば、mkdir -p DirectoryFooとすれば、フォルダがすでに存在していてもmkdirは成功するので、そのようにしても回避は可能。

スポンサーリンク

フォローする