crontab执行shell脚本日志中出现乱码
生活随笔
收集整理的這篇文章主要介紹了
crontab执行shell脚本日志中出现乱码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用nutch開源的搜索引擎抓取網(wǎng)頁信息,通過計劃任務(wù)crontab執(zhí)行shell腳本,并將啟動信息記錄進日志文件,但是每次都會出現(xiàn)亂碼,如圖所示
經(jīng)過反復(fù)測試,排除了java程序問題,文件權(quán)限問題,系統(tǒng)字符集的環(huán)境變量問題(en_US.UTF-8),發(fā)現(xiàn)手動執(zhí)行shell腳本不會出現(xiàn)亂碼,寫在計劃任務(wù)里自動執(zhí)行就會出現(xiàn)亂碼,最后確定是計劃任務(wù)crontab執(zhí)行腳本問題。
問題原因:
因為Unix/Linux下使用crontab時的運行環(huán)境已經(jīng)不是用戶環(huán)境了,因此原本用戶下的一些環(huán)境變量的設(shè)置就失效了。例如原來用戶環(huán)境變量設(shè)置的是GB2312,但是使用crontab運行時的環(huán)境變量就可能是ISO8859-1、UTF-8。
?
解決方法:
首先執(zhí)行命令echo?$LANG,假設(shè)輸出是en_US.UTF-8
然后在腳本中增加一行與系統(tǒng)字符集的環(huán)境變量一致
export LANG=en_US.UTF-8計劃任務(wù)里再次自動運行java程序發(fā)現(xiàn)問題解決!
總結(jié)
以上是生活随笔為你收集整理的crontab执行shell脚本日志中出现乱码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。