Запустите скрипт оболочки cgi в фоновом режиме - PullRequest
2 голосов
/ 17 мая 2011

У меня есть такой сценарий оболочки cgi

#!/bin/sh

# show the page
echo Content-type: text/html
echo
echo "<html><b>Hello world!</b></html>"

# the task I want to do in background
sleep 100
echo $(date) >> log

Я хочу, чтобы страница отображалась после последнего echo, а не в конце выполнения скрипта. Я попытался поместить код в другой файл и выполнить его следующим образом ./background.sh &. Он работает в консоли, но не в браузере.

Я использую lighttpd

1 Ответ

5 голосов
/ 17 мая 2011

Закройте стандартный вывод с помощью exec >&- перед выполнением своей длительной или фоновой задачи.Может быть, вам также придется закрыть stderr.Это будет

exec >&-
exec 2>&-

(кажется, вы не можете закрыть обе строки в одну строку)

Это разорвет канал и позволит вашему веб-серверу отправлять уже выведенные данные (такие какчерез echo) в браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...