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

时间:2015-10-16 21:41:51

标签: php shell command-line ssh

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

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

如何修改它以便输出也写入日志文件(除了在后台运行)。以下对我没有用处:

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:0)

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

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

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

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