Встроенный пакет может создавать фоновые процессы. В случае с buildpack, на который вы указали, файл bin/release
указывает, что он запускает boot.sh
при запуске. Поэтому вы можете просто изменить boot.sh
, чтобы начать все, что хотите, в фоновом режиме с помощью обычного синтаксиса оболочки, добавляющего &
к команде. Например:
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
# ------------------------------------------------------------------------------------------------
Это работает для создания другого процесса, но, к моему стыду, я не могу работать, как получить сценарий регистрации, чтобы называться ПОСЛЕ начала процесса varnishd (я думаю, что вам нужен запущенный процесс varnishd прежде чем вы сможете вызывать ведение журнала) –
Было бы лучше определить полностью отдельный процесс/скрипт, чтобы начать ведение журнала, вместо того, чтобы вешать регистрацию с главного сценария запуска лака? –
Вы можете использовать подоболочку, которая немного спит перед началом ведения журнала, например '(sleep 10; start_my_logging.sh) &'. Вы можете сделать его более изощренным, если знаете какой-то внешний знак, который он может проверить, поскольку это будет означать, что основной процесс готов разрешить ему работать. –