代码之家  ›  专栏  ›  技术社区  ›  Eric Anderson

在使用Ruby和SOAP时如何处理奇怪的stdout消息

  •  0
  • Eric Anderson  · 技术社区  · 15 年前

    stdout得到了一些奇怪的输出:

    ignored attr: {}abstract
    

    我所有的SOAP调用都正常工作,但这只是在通知我的cron作业:)

    谢谢

    1 回复  |  直到 15 年前
        1
  •  2
  •   Bandi-T    15 年前

    您可以通过将stdout重定向到/dev/null来抑制它:

    commandname >/dev/null
    

    您可以通过将stderr重定向到/dev/null来抑制它:

    commandname 2>/dev/null
    

    您可以通过将两者重定向到/dev/null来同时抑制stdout和sderr:

    commandname &>/dev/null
    

    然而 这些方法可以消除脚本可能给出的任何真正错误。

    更好的选择是让nohup运行脚本并将输出(stdout和stderr)重定向到nohup.out:

    nohup commandname
    

    ……这样,您的cron就不会收到任何错误(也不会向您发送错误电子邮件),但您仍然可以定期检查nohup.out的内容,只需确保在正确的目录中创建它(可能nohup有相应的选项,如果您没有从希望创建nohup.out的特定目录中调用nohup)。

    但更好的方法是使用grep抑制这一行:

    commandname | grep -v 'ignored attr: {}abstract'
    

    …(请确保使用正确的shell转义,我只是将其放在撇号“”之间,但大括号可能需要其他转义)这样,您只会抑制来自stdout的特定消息的出现,但会让所有其他消息都通过。因此,如果这是脚本发出的唯一一种消息,您将不会收到电子邮件,但是如果脚本输出其他消息,您将收到电子邮件-我猜这与您想要的非常接近。

    当然,完美的解决方案是深入研究脚本,找出并修复导致消息的原因。