1. 程式人生 > 實用技巧 >crontab執行shell指令碼日誌中出現亂碼

crontab執行shell指令碼日誌中出現亂碼

使用nutch開源的搜尋引擎抓取網頁資訊,通過計劃任務crontab執行shell指令碼,並將啟動資訊記錄進日誌檔案,但是每次都會出現亂碼,如圖所示

104244621.jpg

經過反覆測試,排除了java程式問題,檔案許可權問題,系統字符集的環境變數問題(en_US.UTF-8),發現手動執行shell指令碼不會出現亂碼,寫在計劃任務裡自動執行就會出現亂碼,最後確定是計劃任務crontab執行指令碼問題。

問題原因:

因為Unix/Linux下使用crontab時的執行環境已經不是使用者環境了,因此原本使用者下的一些環境變數的設定就失效了。例如原來使用者環境變數設定的是GB2312,但是使用crontab執行時的環境變數就可能是ISO8859-1、UTF-8。

解決方法:

首先執行命令echo$LANG,假設輸出是en_US.UTF-8

然後在指令碼中增加一行與系統字符集的環境變數一致

export LANG=en_US.UTF-8

計劃任務裡再次自動執行java程式發現問題解決!

124846749.png

轉載於:https://blog.51cto.com/laoxu/1212593