使用exec在后台运行进程,并将输出写入日志文件


use exec to run a process in the background and still write the output to a log file

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

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

我如何修改它,使输出也写入日志文件(除了在后台运行)。下面的代码对我来说不起作用:

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

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

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

如果您想要内容附加到该文件中(即不要每次运行该命令时都替换它),则需要使用>>:

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

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

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

>/tmp/log.txt应该把你的输出附加到log.txt中。

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