freebsd 下程式隨系統開機啟動的一種方法(GNU)
 
我在一個freebsd 7上用原始碼安裝了apache,mysql等軟體,安裝目錄分別是/usr/local/apache及/usr/local/mysql .現在想把apache、mysql隨系統開機自動啟動。在網上查了一下,發現不少人用port安裝,然後修改rc.conf檔案,不知道是我固執還是他人固執,非得按freebsd的辦法,哎!
 
隨著sco unix的日漸衰微,很多廠家不再支援sco,原來那幫執著的sco unix使用者麻煩來了。個人認為沒有必要成為某個廠商的殉葬品。怎麼辦呢?幸好有GNU.
 
總所周知,redhat有個檔案/etc/rc.local,如果我們想定製安裝的軟體隨系統開機啟動的話,只需把啟動程式的命令列追加到這個檔案。回到freebsd下,沒有rc.local這個檔案。與linux不同,freebsd要自動啟動的程式位於/etc/rc.d目錄(linux是/etc/init.d,還要在執行級別做處理:指令碼或連結檔案)。先看看/etc/rc.d裡面都有啥:
# ll /etc/rc.d
total 362
-r-xr-xr-x  1 root  wheel    241 Feb 24 09:41 DAEMON
-r-xr-xr-x  1 root  wheel    405 Feb 24 09:41 FILESYSTEMS
-r-xr-xr-x  1 root  wheel    404 Feb 24 09:41 LOGIN
-r-xr-xr-x  1 root  wheel    339 Feb 24 09:41 NETWORKING
-r-xr-xr-x  1 root  wheel    243 Feb 24 09:41 SERVERS
-r-xr-xr-x  1 root  wheel    981 Feb 24 09:41 abi
…………………………………………………………..
-r-xr-xr-x  1 root  wheel   1803 Feb 24 09:41 ldconfig
r-xr-xr-x  1 root  wheel    535 Feb 24 09:41 local
-r-xr-xr-x  1 root  wheel   1147 Feb 24 09:41 localpkg
有點好奇,開啟檔案local看看(耶!是個shell指令碼),其內容如下:
# more /etc/rc.d/local
#!/bin/sh
#
# $FreeBSD: src/etc/rc.d/local,v 1.6.14.1 2008/01/28 07:58:31 dougb Exp $
#
# PROVIDE: local
# REQUIRE: DAEMON
# BEFORE:  LOGIN
# KEYWORD: shutdown
. /etc/rc.subr
name=”local”
start_cmd=”local_start”
stop_cmd=”local_stop”
local_start()
{
        echo -n `Starting local daemons:`
        if [ -f /etc/rc.local ]; then
                . /etc/rc.local
        fi
        echo `.`
}
local_stop()
{
        echo -n `Shutting down local daemons:`
        if [ -f /etc/rc.shutdown.local ]; then
                . /etc/rc.shutdown.local
        fi
        echo `.`
}
load_rc_config $name
run_rc_command “$1”
這個指令碼的意圖是:如果存在檔案/etc/rc.local,就執行吧,阿門!沒有就算了,一切歸於平靜。既然這樣,我們不妨自己建立檔案/etc/rc.local並給予執行許可權。/etc/rc.local檔案的大致內容為:
#!/bin/sh
/usr/local/apache/bin/apachectl start
/usr/local/mysql/bin/mysqld_safe –user=mysql&
重啟一下系統,嘿嘿,apache和mysql都乖乖的起來了。
 
                                                                                                 海淀福緣門悟真閣
                                                                                             2008-07-18