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 来编辑它;
转自:http://hi.baidu.com/laihua2006/item/c97941d34c9505e3b2f77753
写一个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 来编辑它;
转自:http://hi.baidu.com/laihua2006/item/c97941d34c9505e3b2f77753