2014-01-16 53 views
0

操作系统:Ubuntu的10.04crontab中直接抑制某些输出

使用脚本每天让更新我们的Ubuntu机

而且这个cron守护程序上都给出了邮件通知

而且送花儿给人谈到以下几点:标准输入:是不是tty

此行中我会注释掉,不应该通知如果这个错误occours

前段时间我找到了直接的crontab

到剿输出的方法,但无法找到它了发送

有谁konw如何做到这一点?

关于约翰s。

+1

您可能会考虑将实际的crontab条目添加到您的问题中,因为它可以帮助我们确定应该使用哪种输出重定向。很可能你正在寻找将标准错误重定向到'/ dev/null'的东西,这是通过在命令的末尾添加'2>/dev/null'完成的。 –

+0

但我需要错误讯息的通知...所以我只会压制这个输出:stdin:不是一个tty .....我必须知道发生了什么 – user3201974

+0

如果你“必须知道发生了什么”,你需要更详细地解释你的问题。更新你的问题,向我们展示你的crontab中的行。从cron执行的脚本不应该首先尝试从'stdin'读取;这可能是你的问题的根源。 –

回答

1

回答你的问题如下:

5 0 * * * your_command 2>&1 | grep -v 'stdin: is not a tty' 

重定向错误输出到标准输出,然后通过管道全线贯通grep -v输出以删除不需要的错误。

编辑:在没有进一步调查的情况下进行拍打是一个快速和肮脏的修复。如果你只是需要对那些烦人的电子邮件进行沉默并继续前进,那就去做吧。但是,从长远来看,您可能会发现它更具教育性/有益于尝试找出造成错误的原因,并阻止它。然后,例如,如果添加更多cron作业,则不必将其添加到每个作业中。但最终,如果修复违规命令并不容易,您可能会发现无论如何都必须这样做。

谷歌搜索表明它可能是由something in your .bashrc/root/.profile造成的。检查并修复它们(可能需要更改mesg -ntty -s && mesg -n)。

如果您无法进入底部或需要更多创意,请使用更多信息更新您的问题。

+0

这让我想起了汽车仪表板上的指示灯。最好找出错误消息为什么生成的原因。 –

+0

可能是,但问题恰恰是“我如何在仪表板上贴上指示灯?” –

+0

是的,我建议一个好的答案会指出这是一个坏主意。 OP可能是[XY问题]的受害者(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 –

1

错误消息:

stdin: is not a tty 

表明,一些在你的cron作业正试图从标准输入读取。由cron 调用的作业不应该这样做(当然,除非其标准输入被重定向)。一个小实验表明,cron作业的标准输入是空的,而不是tty。如果我运行vi作为cron作业(不要尝试这种在家里),我通过e-mail,包括这些警告得到一个奇怪的错误消息:

Vim: Warning: Output is not to a terminal 
Vim: Warning: Input is not from a terminal 

所以你显然是在运行东西您(a)假设它可以从stdin中读取,并且(b)假定stdin连接到终端 - 即它是某种交互式命令。

如果可以的话,你应该追踪哪些命令正在做出这些假设并修复它,而不仅仅是丢弃错误信息。(后者让人想起解决汽车仪表板上的警告灯的问题,用磁带覆盖它。)

要么不要从你的crontab调用一个交互命令,要么找到一种方法去做任何你想要的命令,以某种“批处理模式”重新调用运行。

另一方面,有可能您需要从cron作业运行一些交互式命令,并使其正确运行非常困难。在这种情况下,您可以按照Steve Kehlet's answer的建议丢弃错误消息。

如果你有困难跟踪下来的问题,一些有用的技巧是:

* * * * * some-command 

,所以你只需要等待不到一:

暂时运行他们每分钟的测试cron作业分钟查看结果。如果该命令是一个脚本,请尝试将其减少到出现问题的最小示例。

您也可以更新您的问题,向我们展示您的crontab条目以及您正在运行的脚本(如果脚本不是太大)。