Linux下如何让自己的程序在开机时自动启动
系統(tǒng)的服務(wù)在開機(jī)時(shí)一般都可以自動啟動,那我們程序自己寫的程序呢?
?
windows系統(tǒng)在“開始”——〉“所有程序”——〉“啟動”里面放個(gè)快捷方式就行,那Linux下呢?
?
這也是一個(gè)比較簡單的問題,有不少的方法可以解決,這里介紹三種方法。因?yàn)槭呛唵谓榻B,所以具體細(xì)節(jié)不是很詳細(xì),可以通過man看看相關(guān)手冊。
?
一、/etc/rc.local
這是一個(gè)最簡單的方法,編輯“/etc/rc.local”,把啟動程序的shell命令輸入進(jìn)去即可,類似于windows下的“啟動”。
?
例如,每次開機(jī)時(shí)要執(zhí)行一個(gè)haha.sh,這個(gè)腳本放在/opt下面,那就可以在“/etc/rc.local”中加一行“/opt/./haha.sh”,或者兩行“cd /opt”和“./haha.sh”。
?
二、crontab
通過crontab可以設(shè)定程序的執(zhí)行時(shí)間表,例如讓程序在每天的8點(diǎn),或者每個(gè)星期一的10點(diǎn)執(zhí)行一次。
crontab -l 列出時(shí)間表;
crontab -e編輯時(shí)間表;
crontab -d刪除時(shí)間表;
?
“-l”沒什么可說的,就是一個(gè)查看而已;
“-e”是編輯,和vi沒什么差別(其實(shí)就是用vi編輯一個(gè)特定文件);
“-d”基本不用,因?yàn)樗言撚脩羲械臅r(shí)間表都刪除了,一般都是用“-e”編輯把不要了的時(shí)間表逐行刪除;
?
那到底該如何編輯呢?
?
crontab文件的格式是:M H D m d CMD。
一個(gè)6個(gè)字段,其中最后一個(gè)CMD就是所要執(zhí)行的程序,如haha.sh。
M:分鐘(0-59)
H:小時(shí)(0-23)
D:日期(1-31)
m:月份(1-12)
d:一個(gè)星期中的某天(0-6,0代表周日)
?
這5個(gè)時(shí)間字段用空格隔開,其值可以是一個(gè)數(shù)字,也可以用逗號隔開的多個(gè)數(shù)字(或其他) ,如果不需設(shè)置,則默認(rèn)為“*”。
?
例如,每天的8點(diǎn)5分執(zhí)行haha.sh,就是“5 8 * * * /opt/./haha.sh”。
?
好像和“開機(jī)程序自動啟動”扯遠(yuǎn)了,現(xiàn)在回歸正題。其實(shí)上面介紹的crontab的功能已經(jīng)具備了開機(jī)自動啟動的能力,可以寫一個(gè)監(jiān)測腳本,每5分鐘執(zhí)行一次(*/5 * * * * ./haha.sh),如果程序不在了就重新啟動一次。
?
三、注冊系統(tǒng)服務(wù)
操作系統(tǒng)自帶的服務(wù),如ssh,ftp等等,開機(jī)都是自動啟動的,我們也可以通過這種方式讓自己開發(fā)的程序提高“身價(jià)”。
?
可以看到“/etc/rc.d/init.d”下有很多的文件,每個(gè)文件都是可以看到內(nèi)容的,其實(shí)都是一些shell腳本。
系統(tǒng)服務(wù)的啟動就是通過“/etc/rc.d/init.d”中的腳本文件實(shí)現(xiàn)的。我們也可以寫一個(gè)自己的腳本放在這里。
腳本文件的內(nèi)容也很簡單,類似于這個(gè)樣子(例如起個(gè)名字叫做“hahad”):
. /etc/init.d/functions
start() {
??????? echo "Starting my process "
??????? cd /opt
??????? ./haha.sh
}
stop() {
??????? killall haha.sh
??????? echo "Stoped"
}
寫了腳本文件之后事情還沒有完,繼續(xù)完成以下幾個(gè)步驟:
chmod +x hahad??????????????????? #增加執(zhí)行權(quán)限
chkconfig --add hahad???????????? #把hahad添加到系統(tǒng)服務(wù)列表
chkconfig hahad on???????????????? #設(shè)定hahad的開關(guān)(on/off)
chkconfig --list hahad?????????????? #就可以看到已經(jīng)注冊了hahad的服務(wù)
?
這時(shí)候才完成了全部工作。
總結(jié)
以上是生活随笔為你收集整理的Linux下如何让自己的程序在开机时自动启动的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: time_wait状态产生的原因,危害,
- 下一篇: 深入理解阻塞socket和非阻塞sock