2013-06-02 121 views
2

我一直試圖在freebsd啓動時運行一個shell腳本。我已經閱讀了stackoverflow中的所有類似問題並嘗試過。但沒有任何工作。這是我試過的示例代碼是dummyfreebsd啓動腳本沒有運行

#!/bin/sh 
. /etc/rc.subr 
name="dummy" 
start_cmd="${name}_start" 
stop_cmd=":" 

dummy_start() 
{ 
    echo "Nothing started." 
} 

load_rc_config $name 
run_rc_command "$1" 

保存名稱dummy。 權限是-r-xr-xr-x。 在rc.conf文件中做成dummy_enable="YES"

問題是,當我重新啓動我的系統進行測試時,dummy文件不存在。所以腳本沒有執行。還有什麼需要做我的虛擬腳本運行。

SRC:http://www.freebsd.org/doc/en/articles/rc-scripting/article.html#rc-flags

+0

您在哪個目錄中存儲了您的「虛擬」文件? – LtWorf

+0

@LtWorf:我在/etc/rc.d/文件夾中放置了虛擬文件 – Kranthi

+0

然後在重啓時它被移除並沒有任何意義... – LtWorf

回答

0

您需要添加rcvar="dummy_enable"到您的腳本。至少對於FreeBSD 9.1來說。

打電話給你的腳本參數rcvar得到啓用的狀態:

# /etc/rc.d/dummy rcvar 
# dummy 
# 
dummy_enable="YES" 
# (default: "") 

最後又用參數start啓動它 - 這不會啓動該服務/腳本,除非dummy_enable/etc/rc.conf(或/etc/rc.conf.local設置,或/etc/defaults/rc.conf

# /etc/rc.d/dummy start 
Nothing started. 
+0

我遵循上述過程。它只在我通過'/etc/rc.d/dummy start'命令手動運行腳本時才起作用。但我的腳本應該在啓動時啓動,當我重新啓動虛擬文件正在被刪除,所以腳本也沒有運行。爲什麼? – Kranthi

+1

@Kranthi虛擬文件(/etc/rc.d/dummy?)被刪除?我很確定,在系統啓動過程中,標準安裝中的任何內容都不會從/etc/rc.d中刪除任何內容。你有任何其他自定義啓動腳本或本地修改? – sstn

+0

@Kranthi順便說一句:'/ usr/local/etc/rc.d'會是一個更好的自定義腳本。 '/ etc/rc.d'用於基本系統。 – sstn

-1

一種可能的解釋是,系統的rcorder(8)表示:

在每個文件中,必須出現一個包含一系列「需求」,「提供」, 「之前」和「關鍵字」行的塊。

雖然其他地方我記得,如果一個文件沒有「規定」,「提供」或「之前」,然後將它隨意放置在依賴順序。而且,可能是第一次執行$ early_late_divider和第二次執行$ early_late_divider之後的任意位置不同。

OTOH,這是一個股票FreeBSD,還是一些變種?我記得讀到FreeNAS將其配置保存在其他地方,並在每次啓動時重新創建其系統文件。而且,很可能這個/ etc實際上是在一個ramdisk上。

而且,/usr/local/etc/rc.d在安裝第一個安裝rc文件的端口之前不會存在。