Cron

在 cron/mailx 中控製字元處理

  • January 17, 2016

我有一個 cron 作業,它執行一個產生大量輸出的長腳本。一些輸出是由單個輸入符分隔的行;當從命令行執行時,這些使連續的行相互覆蓋,提供進度輸出而不會過度污染後退。但是,在查看 cron 作業的輸出時,我希望看到所有這些行而不會遺漏任何一行。

直到最近,當我mailx從 cronjob 列印輸出報告時,它會將控製字元替換為 reverse-video^M以突出顯示它們。這是我想要的行為,因為它使所有線條都可見。然而,現在發生了一些未知的變化(版本升級?),並按mailx原樣列印控製字元,導致它們在列印郵件時相互覆蓋。如何扭轉這種行為並mailx再次替換控製字元?

事實證明,問題在於mailx的尋呼機設置。more它出於某種原因開始使用,而之前它曾使用過less(它會轉義)。再次連結moreless恢復舊行為。

tr您可以在進一步處理或發送之前通過管道輸出。

./your-script | tr "\r" "\n" | mail

這應該用換行符替換所有輸入符。

在 crontab 中也可以這樣做:

* * * * 2 /path/to/your-script --args | tr "\r" "\n"

引用自:https://unix.stackexchange.com/questions/255565