【问题标题】:use exec to run a process in the background and still write the output to a log file使用 exec 在后台运行进程,仍然将输出写入日志文件
【发布时间】:2016-01-15 18:26:12
【问题描述】:

我在手动运行的一个 php 脚本中有以下行:

exec("/usr/bin/php ".__DIR__."/driver.php > /dev/null &");

我怎样才能修改它,以便输出也写入日志文件(除了在后台运行)。以下对我不起作用:

exec("/usr/bin/php ".__DIR__."/driver1.php /tmp/log.txt > /dev/null &");

【问题讨论】:

    标签: php shell command-line ssh


    【解决方案1】:

    我想exec("/usr/bin/php ".__DIR__."/driver.php >> /tmp/log.txt 2>&1");

    原始文件中的 > /dev/null 是发送输出的内容,但不会发送到日志文件。它转到 /dev/null。

    >> /tmp/log.txt 应该将您的输出附加到 log.txt。

    2>&1 也应该将错误输出重定向到这个日志文件。

    【讨论】:

      【解决方案2】:

      在 bash/shell 中,> 运算符告诉它在哪里写入输出。在您的原始命令中,输出被发送到/dev/null,这意味着它被丢弃了。相反,更新命令以指向您的日志文件:

      exec("/usr/bin/php ".__DIR__."/driver1.php > /tmp/log.txt &");
      

      如果您想将内容追加到该文件,但是(即不要在每次运行该命令时都替换它)您将需要使用>>

      exec("/usr/bin/php ".__DIR__."/driver1.php >> /tmp/log.txt &");
      

      【讨论】:

        猜你喜欢
        • 2019-07-03
        • 2020-09-04
        • 1970-01-01
        • 2013-08-29
        • 1970-01-01
        • 1970-01-01
        • 2021-11-26
        • 1970-01-01
        • 2022-01-23
        相关资源
        最近更新 更多