crontab執行shell指令碼日誌中出現亂碼
阿新 • • 發佈:2020-10-21
使用nutch開源的搜尋引擎抓取網頁資訊,通過計劃任務crontab執行shell指令碼,並將啟動資訊記錄進日誌檔案,但是每次都會出現亂碼,如圖所示
經過反覆測試,排除了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程式發現問題解決!
轉載於:https://blog.51cto.com/laoxu/1212593