2015-05-01 63 views

回答

1

buildpack可以產生後臺進程。在指向的buildpack的情況下,bin/release文件表明它將在啓動時啓動boot.sh。因此,您只需修改boot.sh即可使用通常的shell語法在命令中添加&來在後臺啓動任何內容。例如:

export APP_ROOT=$HOME 
export LD_LIBRARY_PATH=$APP_ROOT/varnish/lib:$LD_LIBRARY_PATH 
if [ -z "$VARNISH_MEMORY_LIMIT" ]; then 
    VARNISH_MEMORY_LIMIT=$MEMORY_LIMIT 
fi 

# Start some logging process in the background 
start_my_logging.sh & 

# check varnish config 
$APP_ROOT/varnish/sbin/varnishd -C -f $APP_ROOT/varnish/etc/varnish/default.vcl 2>&1 

# TODO, Make MEMORY_LIMIT adjustable, this now comes from CF itself 
exec $APP_ROOT/varnish/sbin/varnishd -n /home/vcap/tmp/varnish -F -f $APP_ROOT/varnish/etc/varnish/default.vcl -a 0.0.0.0:$VCAP_APP_PORT -t 120 -w 50,1000,120 -s malloc,$VARNISH_MEMORY_LIMIT -T 127.0.0.1:6082 -p http_resp_hdr_len=32768 2>&1 
# ------------------------------------------------------------------------------------------------ 
+0

這適用於創建另一個進程,但是,我的恥辱,我不能工作了如何獲得AFTER的varnishd過程開始被稱爲記錄腳本(我想你需要一個正在運行的進程varnishd然後纔可以調用日誌記錄) –

+0

定義一個完全獨立的進程/腳本來開始日誌記錄會更好嗎,而不是掛起主清漆啓動腳本的日誌記錄? –

+0

在開始記錄之前,你可以使用一個休眠一下的子shell,比如'(sleep 10; start_my_logging.sh)&'。如果你知道一些可以檢查的外部符號,那麼你可以使它更復雜一點,這表明主進程已準備好允許它運行。 –