Cron
在 cron/mailx 中控製字元處理
我有一個 cron 作業,它執行一個產生大量輸出的長腳本。一些輸出是由單個輸入符分隔的行;當從命令行執行時,這些使連續的行相互覆蓋,提供進度輸出而不會過度污染後退。但是,在查看 cron 作業的輸出時,我希望看到所有這些行而不會遺漏任何一行。
直到最近,當我
mailx
從 cronjob 列印輸出報告時,它會將控製字元替換為 reverse-video^M
以突出顯示它們。這是我想要的行為,因為它使所有線條都可見。然而,現在發生了一些未知的變化(版本升級?),並按mailx
原樣列印控製字元,導致它們在列印郵件時相互覆蓋。如何扭轉這種行為並mailx
再次替換控製字元?
事實證明,問題在於
mailx
的尋呼機設置。more
它出於某種原因開始使用,而之前它曾使用過less
(它會轉義)。再次連結more
到less
恢復舊行為。
tr
您可以在進一步處理或發送之前通過管道輸出。./your-script | tr "\r" "\n" | mail
這應該用換行符替換所有輸入符。
在 crontab 中也可以這樣做:
* * * * 2 /path/to/your-script --args | tr "\r" "\n"