centos7下/etc/rc.local檔案裡配置的開機啟動項不執行的解決辦法

散盡浮華發表於2018-01-30

 

習慣於在/etc/rc.local檔案裡配置我們需要開機啟動的服務,這個在centos6系統下是正常生效的。但是到了centos7系統下,發現/etc/rc.local檔案裡的開機啟動項不執行了!仔細研究/etc/rc.local檔案內容,發現問題如下:

[root@openstack ~]# cat /etc/rc.local 
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
.......

上面的內容翻譯出來的意思是:

#這個檔案是為了相容性的問題而新增的。
#
#強烈建議建立自己的systemd服務或udev規則來在開機時執行指令碼而不是使用這個檔案。
#
#與以前的版本引導時的並行執行相比較,這個指令碼將不會在其他所有的服務後執行。
#
#請記住,你必須執行“chmod +x /etc/rc.d/rc.local”來確保確保這個指令碼在引導時執行。

然後接著檢視/etc/rc.local的許可權

[root@openstack ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 1月  29 10:45 /etc/rc.local -> rc.d/rc.local
[root@openstack ~]# ll /etc/rc.d/rc.local 
-rw-r--r--. 1 root root 473 1月  25 23:52 /etc/rc.d/rc.local

/etc/rc.d/rc.local沒有執行許可權,於是按說明的內容執行:

[root@openstack ~]# chmod +x /etc/rc.d/rc.local
[root@openstack ~]# ll /etc/rc.d/rc.local 
-rwxr-xr-x. 1 root root 473 1月  25 23:52 /etc/rc.d/rc.local

重啟伺服器後發現/etc/rc.local檔案裡設定的開啟啟動項能夠正常執行了。由此可見,雖然centos版本的變遷,/etc/rc.local、/etc/rc.d/rc.local正在處於被棄用的路上。

相關文章