在后台运行cgi shell脚本

时间:2011-05-17 16:04:29

标签: shell cgi

我有像这样的cgi shell脚本

#!/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 个答案:

答案 0 :(得分:5)

在执行长时间运行或后台任务之前,使用exec >&-

Close stdout。也许你还必须关闭stderr。那将是

exec >&-
exec 2>&-

(似乎你不能在一行中关闭)

这将破坏管道并允许您的Web服务器将已输出的数据(例如通过echo)发送到浏览器。