原本可以正常执行的脚本放到crontab调度后,遇到了中文乱码问题。脚本在shell环境下直接运行没有问题。
结论是Unix/Linux下使用 crontab时的运行环境已经不是用户环境了,因此原本用户下的一些环境变量的设置就失效了。
例如原来用户环境变量设置的是GB2312,但是使用 crontab运行时的环境变量就可能是ISO8859-1。
解决方法:
#!/bin/bash export LANG=en_US.UTF-8 cd /home/work/work/Monitor java -jar ETLMonitor-0.0.3-SNAPSHOT.jar DATABAE1 >> log/check.log java -jar ETLMonitor-0.0.3-SNAPSHOT.jar DATABAE2 >> log/check.log java -jar ETLMonitor-0.0.3-SNAPSHOT.jar DATACDS2 >> log/check.log java -jar ETLMonitor-0.0.3-SNAPSHOT.jar FLOATCDS2 >> log/check.log java -jar ETLMonitor-0.0.3-SNAPSHOT.jar DATABAE3 >> log/check.log