詳解Linux開機(jī)自動(dòng)啟動(dòng)SVN原理
本節(jié)主要講解一下Linux開機(jī)自啟動(dòng)SVN,上節(jié)我們講解了Windows下開機(jī)自動(dòng)啟動(dòng)SVN服務(wù),通過本節(jié)的介紹你可以做一個(gè)對(duì)比,看一下在兩種操作系統(tǒng)中開機(jī)自動(dòng)啟動(dòng)SVN服務(wù)的區(qū)別,希望本節(jié)對(duì)你學(xué)習(xí)有所幫助。
在Redhat上配置好svnserve,通過Myeclipse訪問,實(shí)現(xiàn)版本控制。但是開啟svn服務(wù)是手工輸入命令來啟動(dòng),這樣每次重啟服務(wù)器后都得重新輸一次命令,太麻煩。于是就有了新問題:如何讓SVN隨著服務(wù)器開機(jī)自己啟動(dòng)?
先了解一下Linux的自動(dòng)運(yùn)行程序,以下分割線內(nèi)為轉(zhuǎn)自http://hi.baidu.com/wangtao8899/blog/item/dd7365c41c5423a18226ace1.html的內(nèi)容。
*********************************華麗的分割線****************************************************
在RedHatLinux中自動(dòng)運(yùn)行程序
1.開機(jī)啟動(dòng)時(shí)自動(dòng)運(yùn)行程序
Linux加載后,它將初始化硬件和設(shè)備驅(qū)動(dòng),然后運(yùn)行***個(gè)進(jìn)程init。init根據(jù)配置文件繼續(xù)引導(dǎo)過程,啟動(dòng)其它進(jìn)程。通常情況下,修改放置在/etc/rc或/etc/rc.d或/etc/rc?.d目錄下的腳本文件,可以使init自動(dòng)啟動(dòng)SVN其它程序。例如:編輯/etc/rc.d/rc.local文件,在文件最末加上一行"xinit"或"startx",可以在開機(jī)啟動(dòng)后直接進(jìn)入X-Window。
2.登錄時(shí)自動(dòng)運(yùn)行程序
用戶登錄時(shí),bash首先自動(dòng)執(zhí)行系統(tǒng)管理員建立的全局登錄script:/ect/profile。然后bash在用戶起始目錄下按順序查找三個(gè)特殊文件中的一個(gè):/.bash_profile、/.bash_login、/.profile,但只執(zhí)行***找到的一個(gè)。因此,只需根據(jù)實(shí)際需要在上述文件中加入命令就可以實(shí)現(xiàn)用戶登錄時(shí)自動(dòng)運(yùn)行某些程序(類似于DOS下的Autoexec.bat)。
3.退出登錄時(shí)自動(dòng)運(yùn)行程序
退出登錄時(shí),bash自動(dòng)執(zhí)行個(gè)人的退出登錄腳本/.bash_logout。例如,在/.bash_logout中加入命令"tar-cvzfc.source.tgz*.c",則在每次退出登錄時(shí)自動(dòng)執(zhí)行"tar"命令備份*.c文件。
4.定期自動(dòng)運(yùn)行程序
Linux有一個(gè)稱為crond的守護(hù)程序,主要功能是周期性地檢查/var/spool/cron目錄下的一組命令文件的內(nèi)容,并在設(shè)定的時(shí)間執(zhí)行這些文件中的命令。用戶可以通過crontab命令來建立、修改、刪除這些命令文件。例如,建立文件crondFile,內(nèi)容為"00923Jan*HappyBirthday",運(yùn)行"crontabcronFile"命令后,每當(dāng)元月23日上午9:00系統(tǒng)自動(dòng)執(zhí)行"HappyBirthday"的程序("*"表示不管當(dāng)天是星期幾)。
5.定時(shí)自動(dòng)運(yùn)行程序一次
定時(shí)執(zhí)行命令at與crond類似(但它只執(zhí)行一次):命令在給定的時(shí)間執(zhí)行,但不自動(dòng)重復(fù)。at命令的一般格式為:at[-ffile]time,在指定的時(shí)間執(zhí)行file文件中所給出的所有命令。也可直接從鍵盤輸入命令:
- $at12:00
- at>mailtoRoger-s″Havealunch″Ctr-D
- Job1at2000-11-0912:00
- 2000-11-0912:00時(shí)候自動(dòng)發(fā)一標(biāo)題為"Havealunch",內(nèi)容為plan.txt文件內(nèi)容的郵件給Roger。
- #!/bin/bash
- RESTART="........"#里面寫相應(yīng)服務(wù)代碼
- START="......."
- STOP=".........."
- case"$1"in
- restart)
- $RESTART
- echo"......";;
- start)
- $START
- echo"......";;
- STOP)
- $STOP
- echo"......";;
- *)
- echo"Usage:$0{restart¦start¦stop}"
- exit1
- esac
- exit1
腳本寫完要修改一下權(quán)限chmodu+xtest.sh
首先,linux隨機(jī)啟動(dòng)SVN的服務(wù)程序都在/etc/init.d這個(gè)文件夾里,里面的文件全部都是腳本文件(腳本程序簡單的說就是把要運(yùn)行的程序?qū)懙揭粋€(gè)文件里讓系統(tǒng)能夠按順序執(zhí)行,類似windows下的autorun.dat文件),另外在/etc這個(gè)文件夾里還有諸如名為rc1.d,rc2.d一直到rc6.d的文件夾,這些都是linux不同的runlevel,我們一般進(jìn)入的Xwindows多用戶的運(yùn)行級(jí)別是第5級(jí),也就是rc5.d,在這個(gè)文件夾下的腳本文件就是運(yùn)行第5級(jí)時(shí)要隨機(jī)啟動(dòng)的服務(wù)程序。需要注意的是,在每個(gè)rc(1-6).d文件夾下的文件其實(shí)都是/etc/init.d文件夾下的文件的一個(gè)軟連接(類似windows中的快捷方式),也就是說,在/etc/init.d文件夾下是全部的服務(wù)程序,而每個(gè)rc(1-6).d只鏈接它自己啟動(dòng)需要的相應(yīng)的服務(wù)程序!
要啟動(dòng)scim(某一程序),我們首先要知道scim程序在哪里,用locate命令可以找到,scim在/usr/bin/scim這里,其中usr表示是屬于用戶的,bin在linux里表示可以執(zhí)行的程序。這樣,我就可以編寫一個(gè)腳本程序,把它放到/etc/init.d里,然后在rc5.d里做一個(gè)相應(yīng)的軟鏈接就可以了。
這個(gè)腳本其實(shí)很簡單,就兩行:
#!/bin/bash
/usr/bin/scim
***行是聲明用什么終端運(yùn)行這個(gè)腳本,第二行就是要運(yùn)行的命令。
還需要注意的一點(diǎn)是,在rc5.d里,每個(gè)鏈接的名字都是以S或者K開頭的,S開頭的表示是系統(tǒng)啟動(dòng)是要隨機(jī)啟動(dòng)的,K開頭的是不隨機(jī)啟動(dòng)的。這樣,你就可以知道,如果我要哪個(gè)服務(wù)隨機(jī)啟動(dòng),就把它名字***個(gè)字母K改成S就可以了,當(dāng)然,把S改成K后,這個(gè)服務(wù)就不能隨機(jī)啟動(dòng)sVN了。因此,我這個(gè)鏈接還要起名為SXXX,這樣系統(tǒng)才能讓它隨機(jī)啟動(dòng)。
*********************************華麗的分割線****************************************************
了解這些后,作法就很簡單了。
1.創(chuàng)建執(zhí)行腳本svn.sh(/root路徑下),其內(nèi)容很簡單,如下:
#!/bin/bash
svnserve-d--listen-port8080-r/home/svnroot/repository
2.添加可執(zhí)行權(quán)限
命令行運(yùn)行#chmodug+x/root/svn.sh
3.添加自動(dòng)運(yùn)行
打開(vi或gedit)/etc/init.d/rc.d/rc.local,在***添加一行內(nèi)容如下:/root/svn.sh保存退出。
4.檢查
重啟服務(wù)器,使用ps-ef看看svn進(jìn)程是否啟動(dòng)了。嘿嘿,問題搞定了,以后開機(jī)就自動(dòng)啟動(dòng)svn了。
【編輯推薦】