【问题标题】:Script running with cron not reading from redirected stdin使用 cron 运行的脚本未从重定向的标准输入读取
【发布时间】:2013-07-25 21:05:54
【问题描述】:

我有一个带有以下命令的 bash 脚本

command1 < input.txt > output.txt

当我运行它时,将创建 output.txt 文件并填充近 5mb 的数据。问题是当它由 cron 运行时它不起作用。它创建文件 output.txt 但它是空的。我相信发生的事情是它没有从 input.txt 读取输入,因此 command1 立即退出,创建输出文件但不打印任何内容。

任何人都知道发生了什么以及如何解决?

编辑: 在尝试了很多选项之后,问题似乎是 cron 配置为重定向标准输入,所以无论我重定向标准输入还是管道进程,都无法从标准输入读取任何内容。 ¿ 有什么解决办法吗?

【问题讨论】:

  • 您始终可以创建一个包含command1 &lt; input.txt &gt; output.txt 的独立脚本,然后从cron 运行这个新脚本。您可以轻松调试它...
  • 运行cron 失败会发送邮件。检查您的邮件日志。同样,当cron 运行时,它会在不同的环境中运行。所以考虑为input.txtoutput.txt提供绝对文件路径
  • 我知道 cron 应该发送邮件,但在我工作的环境中它不会发送它。我也在使用绝对文件路径。

标签: bash cron stdout stdin


【解决方案1】:

以超级用户身份登录并使用“env”调用您的命令。

env -i  command1 < input.txt > output.txt

这样,您(几乎)在 cron 具有的条件下运行命令。 然后,您将收到描述您的问题的错误消息。

【讨论】:

    猜你喜欢
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多