Linux下cron定时执行Java程序

写一个jar件放在/home/lch/excJava.jar

在#vi /usr/local/myshell/auto.sh

#!/bin/bash 


cd /usr/local/myshell/ 


/usr/java/jdk1.6.0_21/bin/java -jar /home/lch/excJava.jar -cp /usr/java/jdk1.6.0_21/lib/tools.jar:/usr/java/jdk1.6.0_21/lib/dt.jar:.



说明:/usr/java/jdk1.6.0_21是java安装路径
java命令后面必须要加入-cp参数,cron在执行时不加载系统环境变量,如果不加这个参数,程序不会正常执行,
即使命令行可以正确执行,但在cron调用时也会出现问题。

#crontab –e 


* */1 * * * /usr/local/myshell/auto.sh > /www/auto.log //每分钟执行一次,测试用 


/sbin/service crond stop 


/sbin/service crond start



OK执行成功如果Java设了全局全变量则可以:

java -jar /home/lch/excJava.jar //将上在#!/bin/bash cd /usr/local/myshell/下面的换成这个也是可以的

//注意可执行文件需要赋权 # chmod +x leaf.sh
有个奇怪的问题我的jar程序是写下一个txt文件但是中文出现乱码。

解决办法可以在那个auto.sh 文件里面加下面注意要加在#!/bin/bash 的下一行:可用env命令查看本系统的环境。

export LANG=en_US.UTF-8 


export LANGVAR=en_US.UTF-8 


export LC_ALL=zh_CN



二,第一道第五个字段的整数取值范围及意义是:
0~59 表示分
1~23 表示小时
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)
如:

00 02 * * * /usr/local/auto.sh //表示每天早上2点钟执行 而 0 */2 * * * 表示每两个钟

0 11 4 * mon-wed //相于当:0 11 4 * 1-3 //#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 17 * * 1-5 //每周一到五下午 17 点执行

30 0 * * * //每天凌晨30分执行。如果换成30 * * * * 则是每半个钟执行。

下面带一些介绍 :好记性不如烂笔记。

2.2 cron 配置文件;

cron 是一个服务器程序,我们都知道Linux的服务器的配置,大多是通过配置文件来完成的,cron自然也不例外,在Redhat/Fedora 等系统中它的全局性配置文件是/etc/crontab;在Slackware系统中,全局性文件是/var/spool/cron/crontabs/root 。每个用户也有自己的cron配置文件,我们可以通过crontab -e 来编辑它;

在一般情况下,cron都是系统默认安装的,我们要学会查看软件包是否已经安装;

rpm -qa | grep cron //说明已安装 


# /etc/init.d/crond start 

# /etc/init.d/crond stop 

# /etc/init.d/crond restart



细心的读者发现我上面用的是:

/sbin/service crond stop 


/sbin/service crond start



也是可以的

如果想在Fedora 和Redhat 或以这些发行版为基础克隆的发行版,如果想自动开机运行,请用下面的办法;
# chkconfig --levels 35 crond on
第二种:通用

# pgrep crond 注:判断crond 是否在运行; 

# pkill crond 注:杀掉正在运行中的crond; 

# pgrep crond 注:查看是否被杀掉了; 

# /usr/sbin/crond start 注:运行crond;



2.2 cron 配置文件;

cron 是一个服务器程序,我们都知道Linux的服务器的配置,大多是通过配置文件来完成的,cron自然也不例外,在Redhat/Fedora 等系统中它的全局性配置文件是/etc/crontab;在Slackware系统中,全局性文件是/var/spool/cron/crontabs/root 。每个用户也有自己的cron配置文件,我们可以通过crontab -e 来编辑它;