## 切换到root
sudo -i
## 自动启动主要扫描这个目录下的软连接
cd /etc/rcS.d
## 赋予rc.local 可执行的权限
chmod +x ../rc.local
## S表启动时执行,60 是顺序可调整
sudo ln -s ../rc.local S60rc.local
## 重启就发现写在 /etc/rc.local 里的命令开机时都执行了
参考:
https://www.ubuntu-tw.org/modules/newbb/viewtopic.php?viewmode=compact&type=&;topic_id=42022&forum=22
(◕ ◡◡ ◕) 2011/8/15 17:16
一般的 Linux 來說,/etc/rc.local 就是開機自啟動腳本
功用類似 windows 下的 autoexec.bat
但是,Ubuntu 的 /etc/rc.local 是"無效"的!
它有這個檔,但實際上無任何效果,擺好看的而已。
由於 Ubuntu 是 Debian 系的 Linux
所以可以上網搜尋 Debian 的開機自啟動方法
方法如下:
1.
寫一支 shell script,放在 /etc/init.d 底下
檔名隨便,高興就好
不過 shell script 腳本副檔名一般取做 .sh
實際上 Linux 對副檔名不敏感,這只是方便人辨識而已
比方說:寫一支叫做 test.sh 的腳本,放在 /etc/init.d/test.sh
當然的 shell scritp 腳本
開頭要宣告 shell
這樣才會是一支合語法的 shell 腳本
比如:
#!/bin/sh
或
#!/bin/bash
或
#!/bin/dash
2.
給予該腳本可執行權限
sudo chmod 755 test.sh
3.
放在 /etc/init.d 底下,其實不會開機自啟動
那個目錄,只是用來收集腳本的而已
事實上,要放別的地方也行....
把腳本放在一起,比較好管理,這算約定俗成的潛規則吧,不成文的習慣。
真正開機自啟動的偵測目錄,是在:/etc/rcS.d
放在這個目錄中的腳本或檔案,開機會被系統自動執行
/etc/rcS.d 中
一般只放軟連結(符號連結),不放真實的檔案
這也是約定俗成的不成文規矩,這是有理由的
當然的,不想遵守這個規則,直接放真實檔案也行的。
只放軟連結的理由,是因為開機自啟的項目,可能需要經常增減調整,若放真實檔案,砍掉不就沒了,還要先備份比較麻煩。用軟連結,砍掉了也不會影響真實檔案,事後要還原,再軟連結一次即可。
而且有時候是不想開機自啟動,但是想要可以開機後隨時可以手動啟動,那麼放在 /etc/init.d/ 中,隨時都可以手動啟動或停止。
總之,軟連結的方式,可以保持腳本只有一個檔,這樣子在編修的時候,只需維護一個腳本檔,才不會同樣的檔名的腳本到處存,版本內容新舊很難管理。
所以造一個軟連結,例如:
cd /etc/rcS.d
sudo ln -s ../init.d/test.sh S50test.sh
/etc/rcS.d 中只有大寫 S 開頭的檔案,會被執行
檔名 S 後面的號碼,是執行優先順序
其實它是按照檔名排列順序,來依序執行
號碼小的檔名,自然會排在前面,就會被先執行
後碼大的檔名,會排在後面,就會比較晚被執行
/etc/rcS.d 中,原先就有很多系統自帶的啟動腳本軟連結
那些腳本都和系統服務有關係
一般來說自己加入的啟動腳本,必須在系統服務啟動後才執行,所以檔名號碼應該大一點,甚至排在最後。
因為在寫腳本的時候,可能會用到一些指令,而那些指令都是系統服務提供的,若系統服務都還沒啟動,就去呼叫那些服務提供的功能,運行肯定出錯。
所以自己加入的啟動腳本,在開機自啟的時候,順序是很重要的。若不知如何選擇順序,那放到最後面,肯定不會錯。
------------------------------------------
附帶一提:
Q.要如何讓 Ubuntu 的 /etc/rc.local 生效?
A.
如果明白了前面講的那些 /etc/rcS.d 的原理
要讓 /etc/rc.local 生效,很簡單
在 /etc/rcS.d 中,加入一個軟連結
cd /etc/rcS.d
sudo ln -s ../rc.local S60rc.local
(Sxx 執行順序號碼,只是舉例,可以視需要調整)
這樣子 /etc/rc.local 就有生效了。
但有一點我不太明白的就是:
別的 Linux Distro 發行版本,預設都讓 /etc/rc.local 生效的
為何 Ubuntu 要這樣折騰人,還得自己去讓它生效...
原因估計是為了安全性著想,因為很多惡意程式,會去寫入 rc.local 讓惡意程式開機就執行。
不過真正在乎安全性的人,是不會去安裝官方套件庫以外的軟體。所以覺得 Ubuntu 這真的是多此一舉,徒增使用者麻煩而已。