- 论坛徽章:
- 0
|
我们的服务器是用RedHat AS4,跑tomcat 4.31,java用的是1.4.7的.
我们有有一台机器负责监控所有的tomcat机器,如果tomcat的日志输出错误,那么就重启这台机器的tomcat,这个脚本是放在监控机器的crontab中的,但是由于目前各个tomcat的负载比较大,所以每次监控机器去远程ssh执行crontab里的脚本,就会造成上一个脚本还没有执行完毕,下一次的脚本又开始运行了,在监控机器上的crontab的脚本执行间隔时间是1分钟,昨天我把脚本拆分到了各个tomcat上,在自己的本机上执行.
但是新的问题确出现了.
脚本手工测试,tomcat可以正常运行,输出的页面也很正常.
但是放到本机的crontab里,重启tomcat之后,页面显示的却是???,看起来是环境变量中的语言改变了?
每天tomcat的环境变量中是这样命名LANG的, LANG=en_US.UTF-8.
用手工的方式启动脚本,tomcat是正常运行,这个是因为把 LANG=en_US.UTF-8 带入到脚本中了.
但是在crontab里面运行这个脚本,没有输出LANG这个变量,我写了一个测试脚本.
下边是在crontab里输出的环境变量情况
BASH=/bin/sh
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="/server/bin/test_env.sh")
BASH_VERSINFO=([0]="3" [1]="00" [2]="15" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu")
BASH_VERSION='3.00.15(1)-release'
CPULOAD='load average: 2.41, 3.36, 2.90'
DIRSTACK=()
EUID=0
GROUPS=()
HOME=/root
HOSTNAME=host8
HOSTTYPE=i386
IFS='
'
JAVAMEM_LMT=950000
JAVA_MEM=131100
LOGNAME=root
MACHTYPE=i386-redhat-linux-gnu
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/bin:/bin
PIPESTATUS=([0]="0")
POSIXLY_CORRECT=y
PPID=24887
PS4='+ '
PWD=/root
SHELL=/bin/sh
SHELLOPTS=braceexpand:hashall:interactive-comments:posix
SHLVL=2
SYSMEM_LMT=2
SYS_MEM_FREE=906
TERM=dumb
UID=0
USER=root
_=']'
是不是因为在crontab里运行的脚本就不会使用root的环境变量? LANG=en_US.UTF-8
我也修改过/etc/crontab文件,增加了一行 LANG=en_US.UTF-8.,但是输出的脚本中的环境变量还是不含有 LANG=en_US.UTF-8.
如果我想让我的脚本可以很好的运行,需要怎么做呢? |
|