【问题标题】:Run a cgi shell script in background在后台运行 cgi shell 脚本
【发布时间】:2011-08-27 09:18:06
【问题描述】:

我有一个这样的 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 &amp; 执行它。它在控制台中有效,但在浏览器中无效。

我使用 lighttpd

【问题讨论】:

    标签: shell cgi


    【解决方案1】:

    Close stdoutexec &gt;&amp;- 在执行长时间运行或后台任务之前。也许您还必须关闭 stderr。那是

    exec >&-
    exec 2>&-
    

    (好像不能同时关闭)

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

    【讨论】:

    • 它似乎破坏了 cgi 并在此行之后停止运行
    • 可能有错字或错误。如果从命令行运行脚本会发生什么?它会超过这一点还是停止?
    • 好的,我发现了问题。它适用于“exec >&-”,而我使用的是“exec >&- 2>&-”,但没有。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2021-08-11
    • 1970-01-01
    相关资源
    最近更新 更多