我正在努力弄清楚為什麼 rc.local 不會在啟動時執行。
該檔案本身是可執行的,它是從 /etc/rc2.d 呼叫的,
而且從命令列呼叫該檔案不會回傳任何錯誤。
任何想法還需要檢查什麼來找出為什麼不運行?
答案1
既然您說rc.local
手動運行時可以正確執行,那麼立即想到的兩件事是:
- 啟動時出現問題,但當您自己運行時卻正常。也許您正在嘗試運行啟動時不在 PATH 中的程式。
/etc/rc.local
確實沒有在啟動時運行。
在這兩種情況下,我要做的第一件事就是放一些類似的東西
/usr/bin/printenv > /var/tmp/rc.local-$(date +%T)
rc.local
作為該行之後的第一行#!/bin/sh
。每次運行時都會將環境變數列印到帶有時間戳記的檔案中。 (不要寫入該文件,/tmp
因為該文件在啟動時已被清空。)/etc/rc.local
手動運行並快速查看生成的文件(其名稱將類似於/var/tmp/rc.local-21:14:35
)。然後重新啟動系統。
您應該在其中(或任何地方)有兩個/var/tmp
可以比較的文件。如果您只有第一個文件,/etc/rc.local
則不會真正被調用。如果您有兩個文件,請比較它們。後者將有一個非常稀疏環境和路徑。檢查您的rc.local
腳本,看看是否有任何您嘗試執行的內容依賴不在啟動時環境中的某些變數或 PATH 的某些元件。如果您發現某些內容,請將必要的初始化新增至rc.local
.