最近部署一个JAVA程序到Linux中的crontab,遇到了乱码。因为以前一直都用英文信息,所以一直没遇到这个问题。原来还是环境变量的问题,因为在crontab系统里不会携带用户的环境参数。因此,需要额外添加。不过有点奇怪的是其中一些变量,不需要显式export出来就可以了,比如PATH,JAVA_HOME之类的,而LANG参数则需要显式export才可以,否则,就是好多问号,乱码....


crontab所引用的sync.cron
#!/bin/bash
CPATH=
WEBLIB="/usr/local/apache-tomcat-5.5.20/webapps/banner/WEB-INF/lib"
WEBCLASSPATH="/usr/local/apache-tomcat-5.5.20/webapps/banner/WEB-INF/classes"
for i in "$WEBLIB"/*.jar;do
   CPATH="$CPATH":"$i"
done
CPATH="$WEBCLASSPATH":"$CPATH"

export LANG="zh_CN.GB18030"
/usr/local/jdk1.5.0/bin/java -cp $CPATH com.sandai.project.service.MailService


执行java程序的java命令,也要全路径,否则也找不到该命令。