【问题标题】:Crontab run Wget commandcrontab 运行 wget 命令
【发布时间】:2012-11-13 13:27:27
【问题描述】:

我正在使用类似的 crontab:

00 */1 * * * wget http://www.test.com/cron/archieve

我想知道在命令末尾使用> /dev/null 2>&1 的区别,以及是否推荐它。

【问题讨论】:

  • > /dev/null 2>&1 只是使输出静音。不过,我不知道使用 cron 运行时会发生什么。
  • 我宁愿建议将标准输出和错误都重定向到某个给定的文件,例如> wget.out 2>&1 如果您怀疑有问题,可以查看wget.out
  • 虽然可能是追加而不是覆盖;否则下一次运行将截断文件,可能在你有机会检查它之前。不过,这将需要您设置一些日志轮换。恕我直言,最好在静默模式下运行 wget-q 选项;仅错误输出)并允许 cron 在有要报告的内容时向您发送电子邮件。

标签: linux ubuntu wget crontab


【解决方案1】:

如果您不添加 > /dev/null 2>&1,该命令的输出将通过邮件发送给运行该 cron 作业的用户 - 可能是您。

我想您不想被 cron 作业发送垃圾邮件 - 但这取决于您

编辑:解释> /dev/null 2>&1 的真正含义。

有 3 个标准文件描述符:0 (stdin)、1 (stdout) 和 2 (stderr)。 > file1> file 相同,换句话说,重定向std。文件描述符 1 (stdout) 到文件。

2>&1 表示重定向标准。文件描述符 2 (stderr) 到重定向 1 (stdout) 的相同位置。

最后,> /dev/null 2>&1 的全部作用意味着将 stdout 和 stderr 都重定向到 /dev/null,换句话说,使该程序完全静默

【讨论】:

  • 感谢您的解释!我也应该使用wget-O /dev/null 吗?
  • 我猜你可以,但这意味着你将wget 的输出保存到/dev/null。如果是这样,为什么首先在 cron 中设置 wget 行?那么它不会做任何事情,不是吗?还是您想发出GET 请求只是为了表明您的服务器还活着?
【解决方案2】:

如果结果对您不重要,您可以重定向 > /dev/null 2>&1 中的 stdio/stderr 流。看一些例子:

alex@work:~/dev$ ls
arm-2011.03-42-arm-none-eabi.bin  linux
backup_from_ak                    linux-3.4.6.tar.bz2
bc-1.06                           linux.tar.gz                 
CodeSourcery                      mach-lpc32xx                               
alex@work:~/dev$ ls > /dev/null 2>&1
alex@work:~/dev$

【讨论】:

    猜你喜欢
    • 2013-08-13
    • 1970-01-01
    • 2018-07-17
    • 2014-12-03
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多