更牛的開機啟動方法,轉《/etc/rc.local 與 /etc/init.d Linux 開機自動執行程式》
1. /etc/rc.local 這是使用者自訂開機啟動程式,把需要開機自動執行的程式寫在這個指令碼里 --------引用---------------------- 在完成 run level 3 的服務啟動後,如果我還有其他的動作想要完成時,舉例來說, 我還想要寄一封 mail 給某個系統管理帳號,通知他,系統剛剛重新開機完畢,那麼, 是否應該要製作一個 shell script 放置在 /etc/rc.d/init.d/ 裡面,然後再以連結方式連結到 /etc/rc.d/rc3.d/ 裡面呢?呵呵!當然不需要!還記得上一小節提到的 /etc/rc.d/rc.local 吧? 這個檔案就可以執行您自己想要執行的系統指令了。像不像早期 DOS 年代的 autoexec.bat 與 config.sys 呢? ^_^ 也就是說,我有任何想要在開機時就進行的工作時,直接將他寫入 /etc/rc.local , 那麼該工作就會在開機的時候自動被載入喔!而不必等我們登入系統去啟動呢! 是否很方便啊!一般來說,鳥哥就很喜歡把自己製作的 shell script 完整檔名寫入 /etc/rc.d/rc.local ,如此一來,開機就會將我的 shell script 執行過,真是好棒那! --------引用---------------------- 也就是說,在linux啟動的最後階段,系統會執行存於rc.local中的命令。和windows裡面的“啟動”選單有點像,但是設定麻煩些,功能更強大 使用情況:
1)oracle等伺服器的啟動:如果你需要你的oracle可以隨著系統一起啟動,你可以去看看/etc/oratab這個檔案,然後去了解它,你就會發現這裡才是它正確的位置所在
2)靜態路由: 對於需要增加大量的不是本網段的路由時,很多人喜歡在/etc/rc.d/rc.local裡新增類似
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.224.0.251
route add -host 192.168.100.1 gw 10.224.0.251
2. /etc/init.d
這個目錄存放的是一些指令碼,一般是linux以rpm包安裝時設定的一些服務的啟動指令碼。系統在安裝時裝了好多rpm包,這裡面就有很多對應的指令碼。執行這些指令碼可以用來啟動,停止,重啟這些服務。舉個例子來說,如果你要重新啟動 sendmail 的話,而且你的 sendmail 是以 rpm 來安裝的,那麼下達 /etc/rc.d/init.d/sendmail restart 就可以直接啟動 sendmail 囉!
前面說到,/etc/rc.d/init.d這個目錄下的指令碼就類似與windows中的登錄檔,在系統啟動的時候執行。程式執行到這裡(init程式讀取了執行級別), 是該執行init.d裡的指令碼了,但是並不是直接執行,而是有選擇的因為系統並不需要啟動所有的服務。
那麼,系統是如何選擇哪些需要啟動哪些不要呢?這時剛才說的執行級別就起作用了。在決定了系統啟動的run level之後,/etc/rc.d/rc這個指令碼先執行。在RH9和FC7的原始碼中它都是一上來就check_runlevel()(雖然實現的程式碼不一樣,也大同小異),知道了執行級別之後,對於每一個執行級別,在rc.d下都有一個子目錄分別是rc0.d,rc1.d ….. rc6.d。每個目錄下都是到init.d目錄的一部分指令碼一些連結。每個級別要執行哪些服務就在相對應的目錄下,比如級別5要啟動的服務就都放在rc5.d下,但是放在這個rc5.d下的都是一些連結檔案,連結到init.d中相對應的檔案,真正幹活到init.d裡的指令碼。
以下內容是作者自己的翻譯版本,如需轉載到CSDN外其他網站,請註明本文連結。
一、關於/etc/init.d
如果你使用過linux系統,那麼你一定聽說過init.d目錄。這個目錄到底是幹嘛的呢?它歸根結底只做了一件事情,但這件事情非同小可,是為整個系統做的,因此它非常重要。init.d目錄包含許多系統各種服務的啟動和停止指令碼。它控制著所有從acpid到x11-common的各種事務。當然,init.d遠遠沒有這麼簡單。(譯者注:acpid 是linux作業系統新型電源管理標準 ;X11也叫做X Window系統,X Window系統 (X11或X)是一種點陣圖顯示的 視窗系統 。它是在 Unix 和 類Unix ,以及 OpenVMS 上建立 的標準工具包和協議,並可用於幾乎已有的)。
當你檢視/etc目錄時,你會發現許多rc#.d 形式存在的目錄(這裡#代表一個指定的初始化級別,範圍是0~6)。在這些目錄之下,包含了許多對程式進行控制的指令碼。這些指令碼要麼以"K"開頭,要麼以"S"開頭。以K開頭的指令碼執行在以S開頭的指令碼之前。這些指令碼放置的地方,將決定這些指令碼什麼時候開始執行。在這些目錄之間,系統服務一起合作,就像執行狀況良好的機器一樣。然而,有時候你希望能在不使用kill 或killall 命令的情況下,能幹淨的啟動或殺死一個程式。這就是/etc/init.d能夠派上用場的地方了!
如果你在使用Fedora系統,你可以找到這個目錄:/etc/rc.d/init.d。實際上無論init.d放在什麼地方,它都發揮著相同的作用。
為了能夠使用init.d目錄下的指令碼,你需要有root許可權或sudo許可權。每個指令碼都將被作為一個命令執行,該命令的結構大致如下所示:
/etc/init.d/command 選項
comand是實際執行的命令,選項可以有如下幾種:
- start
- stop
- reload
- restart
- force-reload
大多數的情況下,你會使用start,stop,restart選項。例如,如果你想關閉網路,你可以使用如下形式的命令:
/etc/init.d/networking stop
又比如,你改變了網路設定,並且需要重啟網路。你可以使用如下命令:
/etc/init.d/networking restart
init.d目錄下常用初始化指令碼有:
- networking
- samba
- apache2
- ftpd
- sshd
- dovecot
- mysql
當然,你可能有其他更多常用的指令碼,這個取決於你安裝了什麼linux作業系統。
二、關於/etc/rc.local
rc.local也是我經常使用的一個指令碼。該指令碼是在系統初始化級別指令碼執行之後再執行的,因此可以安全地在裡面新增你想在系統啟動之後執行的指令碼。常見的情況是你可以再裡面新增nfs掛載/mount指令碼。此外,你也可以在裡面新增一些除錯用的指令碼命令。例如,我就碰到過這種情況:samba服務總是無法正常執行,而檢查發現,samba是在系統啟動過程中就該啟動執行的,也就是說,samba守護程式配置保證了這種功能本應該正確執行。碰到這種類似情況,一般我也懶得花大量時間去查為什麼,我只需要簡單的在/etc/rc.local指令碼里加上這麼一行:
/etc/init.d/samba start
這樣就成功的解決了samba服務異常的問題。
三、總結
Linux是靈活的。正因為它的靈活性,我們總是可以找到許多不同的辦法來解決同一個問題。啟動系統服務的例子就是一個很好的佐證。有了/etc/init.d目錄下的指令碼,再加上/etc/rc.local這個利器,你可以放心的確保你的服務可以完美的啟動和執行。
原文地址:http://www.cnblogs.com/fatt/p/4790561.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28853590/viewspace-2150722/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux如何使程式開機自動執行Linux
- Linux配置開機自啟動執行指令碼方法有哪些?Linux指令碼
- HP UNIX開機自動掛載與開機自動執行命令
- centos7下/etc/rc.local檔案裡配置的開機啟動項不執行的解決辦法CentOS
- 開機自動啟動應用程式 ON LinuxLinux
- WinForm程式開機自動啟動ORM
- Linux(CentOS)啟動時自動執行指令碼(rc.local)LinuxCentOS指令碼
- 開機自動啟動ORACLE ON LinuxOracleLinux
- Linux中配置開機自啟動執行指令碼的方法是什麼?Linux指令碼
- [Windows][VC]開機自動啟動程式的幾種方法Windows
- [ubuntu]設定開機自啟動程式的方法Ubuntu
- win10開機啟動程式不自動執行的解決方法Win10
- Linux開機自啟動配置Linux
- Linux 新增開機自啟動Linux
- linux下開機自動開啟單機oracleLinuxOracle
- Linux下開機自動啟動OracleLinuxOracle
- linux開機自動啟動指令碼Linux指令碼
- Linux Tomcat安裝篇(daemon執行,開機自啟動)LinuxTomcat
- Android開機自啟動程式Android
- win 開機自動輸入密碼 並設定 cmder 開機自啟執行密碼
- Linux配置開機自啟動執行指令碼方法有哪些?常見介紹!Linux指令碼
- 在linux中怎麼讓程式開機自動啟動?Linux
- Red Hat Linux 9.0開機自動執行程式五法(轉)Linux行程
- centos(linux): 列出所有的開機自啟動程式CentOSLinux
- oracle開機自啟動Oracle
- win10如何禁止autodesk開機自啟_win10禁止autodesk開機自動啟動的方法Win10
- 如何設定win10軟體開機自動啟動 win10軟體開機自動啟動的方法Win10
- Oracle在linux下的開機自啟動(詳細)轉OracleLinux
- windows開機自動啟動oracleWindowsOracle
- 【OEM】Oracle oem取消開機自動啟動(linux)OracleLinux
- Linux 新增指令碼開機自啟動Linux指令碼
- Linux 下軟體開機自啟動Linux
- linux7 開機自啟動oracleLinuxOracle
- rc.local自啟動學習(轉)
- 開機自動執行python指令碼Python指令碼
- KVM虛機開機自啟和取消自啟動
- win10開機自啟動程式關閉方法_win10怎麼關閉開機啟動項Win10
- CentOS開機自動執行程式的指令碼CentOS行程指令碼