Linux-Mint

根本無法讓 rc.local 自動執行

  • August 6, 2013

所以我一直試圖讓/etc/rc.local腳本執行,而對於我的生活,似乎沒有任何效果。我可以使用 手動執行它service rc.local start,它只是將“hi”回顯到我的主目錄中的一個文件,但在重新啟動時它不會執行。似乎設置了所有正確的權限,並且連結存在於正確的 rc#.d 目錄中。供參考,以下是相關資訊:

# ls -l /etc/rc.local
-rwxr-xr-x 1 root root 45 Apr 12 21:10 /etc/rc.local


# ls -l /etc/init.d/rc.local                                  
-rwxr-xr-x 1 root root 812 Apr 12 21:00 /etc/init.d/rc.local


# for i in {0..6}; do cd rc$i.d ; pwd; ls -l |grep rc.local; cd ..; done
/etc/rc0.d
lrwxrwxrwx 1 root root  18 Apr 12 20:53 K20rc.local -> ../init.d/rc.local
/etc/rc1.d
lrwxrwxrwx 1 root root  18 Apr 12 20:53 K20rc.local -> ../init.d/rc.local
/etc/rc2.d
lrwxrwxrwx 1 root root  18 Apr 12 20:53 S20rc.local -> ../init.d/rc.local
/etc/rc3.d
lrwxrwxrwx 1 root root  18 Apr 12 20:53 S20rc.local -> ../init.d/rc.local
/etc/rc4.d
lrwxrwxrwx 1 root root  18 Apr 12 20:53 S20rc.local -> ../init.d/rc.local
/etc/rc5.d
lrwxrwxrwx 1 root root  18 Apr 12 20:53 S20rc.local -> ../init.d/rc.local
/etc/rc6.d
lrwxrwxrwx 1 root root  18 Apr 12 20:53 K20rc.local -> ../init.d/rc.local


# cat /etc/rc.local
#! /bin/bash

echo hi > ~user/test

exit 0

我試過刪除/etc/rc.localand /etc/init.d/rc.local, running update-rc.d rc.local remove,然後恢復它們並update-rc.d rc.local defaults像這個問題一樣執行:Rc.local does not execute。那沒有用。

它在重新啟動或進入任何初始化級別後也不起作用。#! /bin/sh -e當 shebang 行讀取或時,它不起作用#! /bin/bash。不過,如果我手動執行它,我可以讓/etc/rc.local/etc/init.d/rc.local腳本回顯到不同的文件。

所以我的問題是……我做錯了什麼,我怎樣才能讓 rc.local 執行?此外,雖然我不介意聽到替代方案(如暴發戶),但我只會接受一個向我展示(或幫助我找到)如何讓 rc.local 正常執行的答案(最好告訴我出了什麼問題)。

以下是有關其價值的一些附加資訊:

# dmesg | grep "Linux version"
[    0.000000] Linux version 3.5.0-17-generic (buildd@allspice) (gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) ) #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 (Ubuntu 3.5.0-17.28-generic 3.5.5)


# cat /proc/version
Linux version 3.5.0-17-generic (buildd@allspice) (gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) ) #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012

# lsb_release -a
No LSB modules are available.
Distributor ID: LinuxMint
Description:    Linux Mint 14 Nadia
Release:        14
Codename:       nadia

問題是在這一行:

echo hi > ~user/test

~user沒有像您預期的那樣擴展。rc.local正在執行,但由於意外的擴展,它正試圖寫入它可能沒有權限的地方。

請嘗試以下操作:

echo ~user/test > /dev/shm/test

然後檢查/dev/shm/test. 這將顯示rc.local確實執行,以及它正在擴展~user到什麼。

雖然,我的建議是使用顯式路徑,而不是依賴外部環境。

引用自:https://unix.stackexchange.com/questions/72267