この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
ども。あいしんくいっと(@ithinkitnet)です。
LinuxOS起動時、手軽にサービスを自動起動させるのに便利なのが「rc.local」ファイルに書き込むという手段。
「自動起動させたいけど、「chkconfig」もしくは「/etc/init.d」に登録するまでもない」といったサービスはrc.localに1行書いておけば自動起動してくれました。
ithinkit
ですが、CentOS7ではひと手間加える必要があります。
それは・・・。
CentOS7だとrc.localに書くだけではダメ!
CentOS7でいつものようにrc.localに記載して「よし!これでサービス自動起動するだろう」と思っていたのですが、なぜか自動起動せず。
なんでだろう?って調べてみたところ、CentOS7からサービス管理方式がinitdからsystemdに変更された影響により、普通にrc.localに記載しただけでは実行されないことが判明。
引用元: CentOS7でrc.localが実行されない問題
確認してみると、やはりrc.localに実行権限がない模様。
# ls -l /etc/rc.d/rc.local
-rw-r--r--. 1 root root 648 2月 23 18:00 /etc/rc.d/rc.local
ちなみに過去のRHEL/Centps系のrc.localはと言うと、
RHEL 5.8
[root@rhel5 ~]# ll /etc/rc.d/rc.local
-rwxr-xr-x 1 root root 281 1月 6 2012 /etc/rc.d/rc.local
[root@rhel5 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
RHEL 7.2
# ll /etc/rc.d/rc.local
-rw-r--r--. 1 root root 534 1月 19 17:56 /etc/rc.d/rc.local
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.2 (Maipo)
CentOS6
[root@cent6 ~]# ll /etc/rc.d/rc.local
-rwxr-xr-x 1 root root 220 2月 25 01:05 2017 /etc/rc.d/rc.local
[root@cent6 ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
CentOS7
[root@cent7 ~]# ll /etc/rc.d/rc.local
-rw-r--r--. 1 root root 473 9月 15 2016 /etc/rc.d/rc.local
[root@cent7 ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
手元にあるOSで確認してみましたが、どうやらCentOS7、RHEL7からrc.localの実行権限がなくなっている模様。
rc.localに実行権限を付与
対応としてrc.localに実行権限を付与すると、これまで通りサービス自動起動が実現出来ました!
# chmod u+x /etc/rc.d/rc.local
# ls -l /etc/rc.d/rc.local
-rwxr--r--. 1 root root 648 2月 21 15:31 /etc/rc.d/rc.local
RHEL8.2でrc.local動作確認
RHEL8.2(RedHatEnterpriseLinux release 8.2)でもrc.localが使えるか確認してみます。
/etc/rc.d/rc.localのシンボリックリンクという形で存在していました。
[root@rhel82 rc.d]# ls -l /etc/rc.d/rc.local
-rw-r--r--. 1 root root 489 1月 29 17:04 /etc/rc.d/rc.local
/etc/rc.d/rc.localに対して実行権限を付与することで動作することを確認。
[root@rhel82 rc.d]# chmod +x /etc/rc.d/rc.local
[root@rhel82 rc.d]# ls -l /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 489 1月 29 17:04 /etc/rc.d/rc.local
CentOS7と同様、RHEL8系でも実行権限を付与することで、rc.localが機能することが確認出来ました。
「CentOS7からはrc.localに実行権限を与えなければならない」という事実を知らないとハマるのでぜひ覚えておきましょう。
ithinkit
以上、あいしんくいっとでした( ..)φメモメモ