とある用途で構築したサーバー。毎晩深夜に再起動を行って再起動後に他のDBサーバーへの接続のためにトンネルを掘るコマンドを再起動後に実施できるようにrc.localに記述していたのだが、再起動後にどうもトンネルを掘るコマンドが実行されていない。
そんなrc.localに記述したはずなのに実行されない。といった場合の対処法になります。
/etc/rc.d/rc.local
に実行権限が無いために起動時に実行ができないことが原因。
編集は/etc/rc.local
で行っていて実行権限を見ると実行可能状態となっているが、実際には/etc/rc.local
は/etc/rc.d/rc.local
のシンボリックリンクとなっており、/etc/rc.d/rc.local
のほうには実行権限が付いていないというケースがあります。
/etc/rc.localの状態を確認
$ ls -l /etc/rc.local
lrwxrwxrwx 1 root root 13 Aug 25 04:05 /etc/rc.local -> rc.d/rc.local
↑実行権限が付いていて問題無いように見えるが、、
/etc/rc.d/rc.localの状態を確認
$ ls -l /etc/rc.d/rc.local
-rw-r--r-- 1 root root 618 Sep 18 10:44 /etc/rc.d/rc.local
↑シンボリックリンク元のほうは実行権限が付いていない
実行権限を/etc/rc.d/rc.localのほうに付けます。
実行権限を付与
$ sudo chmod 755 /etc/rc.d/rc.local
権限状態の確認
$ ls -l /etc/rc.d/rc.local
-rwxr-xr-x 1 root root 618 Sep 18 10:44 /etc/rc.d/rc.local
実行権限は意外と見落としがちだったりするので(特にシンボリックリンク)、忘れずに確認しましょう。