rc.local自啓動學習(轉)

linux有本身一套完整的啓動體系,抓住了linux啓動的脈絡,linux的啓動過程將再也不神祕。linux

本文中假設inittab中設置的init tree爲:web

/etc/rc.d/rc0.d
/etc/rc.d/rc1.d
/etc/rc.d/rc2.d
/etc/rc.d/rc3.d
/etc/rc.d/rc4.d
/etc/rc.d/rc5.d
/etc/rc.d/rc6.d
/etc/rc.d/init.dsql

目錄shell

1. 關於linux的啓動
2. 關於rc.d
3. 啓動腳本示例
4. 關於rc.local
5. 關於bash啓動腳本
6. 關於開機程序的自動啓動apache


1. 關於linux的啓動bash

init是全部進程的頂層
init讀取/etc/inittab,執行rc.sysinit腳本
(注意文件名是不必定的,有些unix甚至會將語句直接寫在inittab中)oracle

rc.sysinit腳本做了不少工做:atom

init $PATHspa

config network命令行

start swap function

set hostname

check root file system, repair if needed

check root space

....


rc.sysinit根據inittab執行rc?.d腳本
linux是多用戶系統,getty是多用戶與單用戶的分水嶺
在getty以前運行的是系統腳本


2. 關於rc.d

全部啓動腳本放置在 /etc/rc.d/init.d下

rc?.d中放置的是init.d中腳本的連接,命名格式是:

S{number}{name}

K{number}{name}

S開始的文件向腳本傳遞start參數

K開始的文件向腳本傳遞stop參數

number決定執行的順序


3. 啓動腳本示例

這是一個用來啓動httpd的 /etc/rc.d/init.d/apache 腳本:

代碼:

#!/bin/bash

......

能夠看出他接受start,stop,restart,status參數

而後能夠這樣創建rc?.d的連接:

代碼:

cd /etc/rc.d/init.d &&

ln -sf ../init.d/apache ../rc0.d/K28apache &&

ln -sf ../init.d/apache ../rc1.d/K28apache &&

ln -sf ../init.d/apache ../rc2.d/K28apache &&

ln -sf ../init.d/apache ../rc3.d/S32apache &&

ln -sf ../init.d/apache ../rc4.d/S32apache &&

ln -sf ../init.d/apache ../rc5.d/S32apache &&

ln -sf ../init.d/apache ../rc6.d/K28apache


4. 關於rc.local

常常使用的 rc.local 則徹底是習慣問題,不是標準。

各個發行版有不一樣的實現方法,能夠這樣實現:

代碼:

touch /etc/rc.d/rc.local

chmod +x /etc/rc.d/rc.local

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc1.d/S999rc.local &&

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc2.d/S999rc.local &&

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc3.d/S999rc.local &&

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc4.d/S999rc.local &&

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc5.d/S999rc.local &&

ln -sf /etc/rc.d/rc.local /etc/rc.d/rc6.d/S999rc.local

5. 關於bash啓動腳本

/etc/profile

/etc/bashrc

~/.bash_profile

~/.bashrc

是bash的啓動腳本

通常用來設置單用戶的啓動環境,也能夠實現開機單用戶的程序,但要明確他們都是屬於bash範疇而不是系統範疇。

他們的具體做用介紹以下:

/bin/bash這個命令解釋程序(後面簡稱shell)使用了一系列啓動文件來創建一個運行環境: 
/etc/profile

/etc/bashrc

~/.bash_profile

~/.bashrc

~/.bash_logout

每個文件都有特殊的功用並對登錄和交互環境有不一樣的影響。

/etc/profile 和 ~/.bash_profile 是在啓動一個交互登錄shell的時候被調用。

/etc/bashrc 和 ~/.bashrc 是在一個交互的非登錄shell啓動的時候被調用。

~/.bash_logout 在用戶註銷登錄的時候被讀取

一個交互的登錄shell會在 /bin/login 成功登錄以後運行。一個交互的非登錄shell是經過命令行來運行的,如[prompt]$/bin/bash。通常一個非交互的shell出如今運行 shell腳本的時候。之因此叫非交互的shell,是由於它不在命令行上等待輸入而只是執行腳本程序。

6. 關於開機程序的自動啓動

系統腳本能夠放置在/etc/rc.d/init.d中並創建/etc/rc.d/rc?.d連接,也能夠直接放置在/etc/rc.d/rc.local中。

init.d腳本包含完整的start,stop,status,reload等參數,是標準作法,推薦使用。

爲特定用戶使用的程序(若有的用戶須要使用中文輸入法而有的不須要)放置在~/中的bash啓動腳本中。

========================================================================
設置系統自動啓動
在/etc/init.d/下建立smsafe文件

內容:
#!/bin/bash
# chkconfig: 35 95 1
# description: script to start/stop smsafe
case 1instart)sh/opt/startsms.sh;;stop)sh/opt/stopsms.sh;;)echo"Usage:0 (start|stop)"
;;
esac
更改權限
# chmod 775 smsafe

加入自動啓動
# chkconfig –add smsafe

查看自動啓動設置
# chkconfig –list smsafe

smsafe 0:off 1:off 2:off 3:on 4:off 5:on 6:off

之後能夠用如下命令啓動和中止腳本
# service smsafe start 啓動

# service smsafe stop 中止

=======================================================================
jira 的啓動主要依靠的是bin目錄下的catalina.sh腳本,提供瞭如init腳本的start,stop等參數

#!/bin/bash

#

# chkconfig: 2345 85 15

# description: jira

# processname: jira

# source function library

. /etc/init.d/functions

 

#下面一行比較重要,爲jira的安裝路徑,沒有的話,將會提示找不到文件

CATALINA_HOME="/var/www/jira"

 

RETVAL=0

start() {

echo -n $"Starting jira services: "

 

. /var/www/jira/bin/catalina.sh start

RETVAL=$?

echo

}

stop() {

echo -n $"Shutting down jira services: "

. /var/www/jira/bin/catalina.sh stop

RETVAL=$?

echo

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart|reload)

stop

start

;;

status)

status jira

RETVAL=$?

;;

*)

echo "Usage:0 {start|stop|restart|status}"

exit 1

esac

exit $RETVAL

 

-------------------------------

保存爲/etc/init.d/jira

 

而後利用chkconfig --add jira

 

OK

 

啓動/etc/init.d/jira start

中止/etc/init.d/jira stop

=======================================================================

(以Websphere爲例子)

1. 在/etc/rc.d/init.d目錄下新建啓動腳本startWebsphere,鍵入如下內容:
#!/bin/sh
/opt/WebSphere/AppServer/bin/startServer.sh server1

修改該文件的權限:
chmod 755 startWebsphere

2. 在對應的目錄下創建軟鏈接(假設系統默認進入X11)
cd /etc/rc.d/rc5.d
ln -s ../init.d/startWebsphere S99startWebsphere

3. 重啓系統便可

=======================================================================
linux下oracle的自啓動腳本

1.寫一個StartOracle.sql,假設放在/目錄下 
vi /StartOracle.sql加入以下兩行保存 
startup 
exit 

2.配置/etc/rc.local 
vi /etc/rc.local加入以下內容,保存 
su - oracle -c 'ORACLEHOME/bin/lsnrctlstartsuoraclecORACLE_HOME/bin/sqlplus "/as sysdba" @/StartOracle.sql' 

3. 若是還要自動啓動oracle enterprise manager(em)和isqlplus能夠以下配置 
vi /etc/rc.local 加入: 
su - oracle -c 'ORACLEHOME/bin/emctlstartdbconsolesuoraclecORACLE_HOME/bin/isqlplusctl start' 

要知道em和isqlplus等使用的端口能夠查詢文件: 
$ORACLE_HOME/install/portlist.ini(以oracle 10.1.0.3爲例)

=======================================================================#root命令行下直接綁定演示:arp -s 192.x.x.x. 00:ea:se綁定.arp -d 刪除arp -f 批量導入

相關文章
相關標籤/搜索