2014-01-16 72 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條目以及您正在運行的腳本(如果腳本不是太大)。