【问题标题】:PHP exec() nohup with redirectPHP exec() nohup 带重定向
【发布时间】:2015-05-12 07:31:19
【问题描述】:

我正在尝试使用 exec() 执行命令并将 stdout 和 stderr 重定向到文件。

exec("nohup python main.py -i 1 > /var/scripts/logs/1_out.log 2>&1 &");

它将创建文件,但不会向其打印任何内容。

如果我在终端中运行命令,所有输出都没有问题。

【问题讨论】:

  • 尝试在命令字符串中添加</dev/null,本质上是重定向所有 IO流(stdin默认不重定向)
  • 还是什么都没有。 exec("nohup main.py -i 1 > /var/scripts/logs/1_out.log 2>&1 </dev/null &");
  • 还有没有nohup.out文件(默认文件nohup将stdout重定向到)
  • 检查我的答案。通过使用 python 的 -u 选项使其工作,该选项禁用 python 的输出缓冲区。

标签: php exec stdout stderr nohup


【解决方案1】:

搞定了。 Python 会进行自己的输出缓冲,使其无法写入文件。使用 -u 选项运行它会禁用此功能。最终代码如下所示:

exec("nohup python -u main.py -i 1 > /var/scripts/logs/1_out.log 2>&1 </dev/null &");

谢谢。

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 1970-01-01
    • 2014-10-23
    • 2012-12-16
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    相关资源
    最近更新 更多