rc.localに記述したコマンドが実行されない時の対応方法

とある用途で構築したサーバー。毎晩深夜に再起動を行って再起動後に他の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

まとめ

実行権限は意外と見落としがちだったりするので(特にシンボリックリンク)、忘れずに確認しましょう。

Leave a Reply

Your email address will not be published. Required fields are marked *