在Linux系統如何讓程序開機時自動啟動 核心提示:系統的服務在開機時一般都可以自動啟動,那在linux系統下如果想要程序在開機時自動啟動怎么辦?我們知道在 windows系統“開始”-->“所有程序”-->“啟動”里面放個快捷方式就行,那Linux系統下呢?...系統的服務在開機時一般都可以自動啟動,那在linux系統下如果想要程序在開機時自動啟動怎么辦?我們知道在 windows系統“開始”-->“所有程序”-->“啟動”里面放個快捷方式就行,那Linux系統下呢? 這也是一個比較簡單的問題,有不少的方法可以解決,這里介紹三種方法。因為是簡單介紹,所以具體細節不是很詳細,可以通過man看看相關手冊。 一、/etc/rc.local 這是一個最簡單的方法,編輯“/etc/rc.local”,把啟動程序的shell命令輸入進去即可(要輸入命令的全路徑),類似於windows下的“啟動”。 使用命令 vi /etc/rc.local 然后在文件最后一行添加要執行程序的全路徑。 例如,每次開機時要執行一個haha.sh,這個腳本放在/opt下面,那就可以在“/etc/rc.local”中加一行“/opt/./haha.sh”,或者兩行“cd /opt”和“./haha.sh”。 二、crontab(類似於windows的任務計划服務) 通過crontab可以設定程序的執行時間表,例如讓程序在每天的8點,或者每個星期一的10點執行一次。 crontab -l 列出時間表; crontab -e編輯時間表; crontab -d刪除時間表; “-l”沒什么可說的,就是一個查看而已; “-e”是編輯,和vi沒什么差別(其實就是用vi編輯一個特定文件); “-d”基本不用,因為它把該用戶所有的時間表都刪除了,一般都是用“-e”編輯把不要了的時間表逐行刪除; 那到底該如何編輯呢? crontab文件的格式是:M H D m d CMD。 一個6個字段,其中最后一個CMD就是所要執行的程序,如haha.sh。 M:分鍾(0-59) H:小時(0-23) D:日期(1-31) m:月份(1-12) d:一個星期中的某天(0-6,0代表周日) 這5個時間字段用空格隔開,其值可以是一個數字,也可以用逗號隔開的多個數字(或其他) ,如果不需設置,則默認為“*”。 例如,每天的8點5分執行haha.sh,就是“5 8 * * * /opt/./haha.sh”。 好像和“開機程序自動啟動”扯遠了,現在回歸正題。其實上面介紹的crontab的功能已經具備了開機自動啟動的能力,可以寫一個監測腳本,每5分鍾執行一次(*/5 * * * * ./haha.sh),如果程序不在了就重新啟動一次。(*/5 )表示每5分鍾 三、注冊系統服務 操作系統自帶的服務,如ssh,ftp等等,開機都是自動啟動的,我們也可以通過這種方式讓自己開發的程序提高“身價”。 比如我想把某個已經安裝了的服務添加為系統服務,可以執行以下命令: chkconfig --add 服務名稱 (首先,添加為系統服務,注意add前面有兩個橫杠) chkconfig -leve 啟動級別 服務名 on (說明,3級別代表在命令行模式啟動,5級別代表在圖形界面啟動,on表示開啟) chkconfig -leve 啟動級別 服務名 off (說明,off表示關閉自啟動) 例如:chkconfig -level 3 mysql on (說明:讓mysql服務在命令行模式,隨系統啟動) 也可以使用 chkconfig --add 服務名稱 來刪除系統服務 ****************************************************************************************** 如果要查看哪些服務被添加為系統服務可以使用命令 : ntsysv 或者chkconfig --list 如果要查看哪些程序被添加為自啟動,可以使用命令 : cat /etc/rc.local (查看這個文件中添加了哪些程序路徑) ******************************************************************************************* 下面舉例說說,如何把一個shell腳本添加為系統服務,並跟隨系統啟動: 可以看到“/etc/rc.d/init.d”下有很多的文件,每個文件都是可以看到內容的,其實都是一些shell腳本。 系統服務的啟動就是通過“/etc/rc.d/init.d”中的腳本文件實現的。我們也可以寫一個自己的腳本放在這里。 腳本文件的內容也很簡單,類似於這個樣子(例如起個名字叫做“hahad”): . /etc/init.d/functions start() { echo "Starting my process " cd /opt ./haha.sh } stop() { killall haha.sh echo "Stoped" } 寫了腳本文件之后事情還沒有完,繼續完成以下幾個步驟: chmod +x hahad #增加執行權限 chkconfig --add hahad #把hahad添加到系統服務列表 chkconfig hahad on #設定hahad的開關(on/off) chkconfig --list hahad #就可以看到已經注冊了hahad的服務 這時候才完成了全部工作。