1. 程式人生 > >CentOS7中rc.local中的指令不能生效問題。

CentOS7中rc.local中的指令不能生效問題。

問題:
在系統中/etc/rc.local設定自啟動命令的時候,重啟計算機,檔案中的指令無法生效。

我這裡編譯安裝了一個mongodb資料庫的服務,然後修改了環境變數。寫入到了.bash_profile 檔案中,在shell中可以直接執行命令。

檢視檔案,檔案的命令也是正確的
CentOS7中rc.local中的指令不能生效問題。
重啟後指令無法生效

一、在總結問題之前,先要搞明白幾個檔案的作用。

rc.local

路徑/etc/rc.d/rc.local或/etc/rc.local(軟連線檔案)
作用:用來開機自啟動一些指定指令。

./.bash_profile:

路徑:每個使用者的根目錄下的隱藏檔案;
作用,用來設定該使用者的環境變數,個人設定,設定之後只能自己使用。

/etc/profile:

路徑:/etc/profile
作用:用來設定所有使用者的環境變數,整體設定,設定完成後,所有使用者皆可以使用

二、查詢產生問題的因素。

在linux中,一個檔案出現了問題,首先應該檢視檔案的完整性和檔案的許可權。(個人習慣)。

(1)啟動時,檔案的執行先後。

我這裡雖然修改了環境變數,但是,當計算機啟動的時候,/etc/rc.local檔案是先於/etc/profile或.bash_profile檔案執行的。

所以,我這裡得命令應該使用絕對路徑的形式。(which mongod)。

(2)檔案的執行許可權。

檢視軟連線檔案:
CentOS7中rc.local中的指令不能生效問題。
大多數人會在這裡出現問題,因為這裡顯示的是擁有可執行許可權的。這個檔案的最終執行還是要到/etc/rc.d/rc.local檔案那裡執行,所以我們需要看的檔案許可權應該是原始檔。

CentOS7中rc.local中的指令不能生效問題。

從這裡可以看出,檔案根本就沒有執行許可權,所以說當計算機開機的時候,這個檔案也不會去執行。

三、解決辦法

(1)執行命令的時候,將命令寫為執行檔案的絕對路徑

(2)給/etc/rc.d/rc.local檔案附加上可執行許可權

chmod +x /etc/rc.d/rc.local

完成之後重啟就可以了。

四、總結

這個問題的出現,一是因為/etc/rc.d/rc.local沒有了執行許可權(版本問題,看情況以後可能會捨去這個檔案)。二是沒有認清/etc/rc.d/rc.local檔案和/etc/profile檔案的執行先後。通過修改檔案許可權和指令執行方法即可解決。

其實在這裡,細心的同學可能會注意到/etc/rc.d/rc/local檔案中的註釋

CentOS7中rc.local中的指令不能生效問題。
人家已經說得明白的啦。

都怪我英語太差啊,看到英語略過。。。。