天天看點

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檔案的執行先後。通過修改檔案權限和指令執行方法即可解決。

繼續閱讀