日期:2014-05-16  浏览次数:20581 次

linux服务crond定时运行java程序

?

crontab 运行java程序
加入你的java程序位于/root/example目录下面,名为Test.java
Test.java内容为:
public class Test{
public static void main(String args[]){
System.out.println("ok");
}
}
但是由于crontab不能读取java的相关环境变量,所以必须手动加载java环境变量。
方法一:
在此目录下面写一个shell名为run.sh内容如下:
#!/bin/sh
cd /root/example(这一条一定不要忘)
echo hello
java Test
然后运行命令crontab -e,添加一条命令:
*/1 * * * * . /root/example/run.sh >> /root/example/run.log
保存退出,然后重启crond服务:service crond restart
停掉crond服务:service crond stop
一分钟后看/root/example/run.log文件内容是否是echo和java两个的打印内容
一定要保证在crontab的5个星号后面有一个点加一个空格,crond才能保证自动加载java环境变量
方法二:
在run.sh里面用绝对路径加载java环境变量,则run.sh内容为:
#/bin/sh
cd /root/example(这一条一定不要忘)
/usr/java/jdk1.5.0.09/bin/java Test -cp /usr/java/jdk1.5.0.09/lib/tools.jar:/usr/java/jdk1.5.0.09/lib/dt.jar
然后crontab -e命令添加一条:
*/1 * * * * sh /root/example/run.sh >> /root/example/run.log
保存退出,然后重启crond服务:service crond restart
一分钟后看/root/example/run.log文件内容是否是echo和java两个的打印内容
方法三:
run.sh内容如下:
#!/bin/sh
JAVA_HOME=/usr/java/jdk1.5.0_09/
CLASSPATH="/usr/java/jdk1.5.0_09/lib/dt.jar:/usr/java/jdk1.5.0_09/lib/tools.jar:/usr/java/jdk1.5.0_09/lib/mysql.jar"
export CLASSPATH
PATH==/usr/java/jdk1.5.0_09/bin
export PATH
echo hello
cd /root/example(这一条一定不要忘)
java Test
然后crontab -e 添加一条:
*/1 * * * * sh /root/example/run.sh >> /root/example/run.log
保存退出,然后重启crond服务:service crond restart
一分钟后看/root/example/run.log文件内容是否是echo和java两个的打印内容
后两种方法crontab -e命令中sh可有可无。
无论是命令还是参数,都尽量使用绝对路径名称!
Crontab的格式

第1列分钟1~59
第2列小时1~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~6(0表示星期天)
第6列要运行的命令

下面是crontab的格式:
分 时 日 月 星期 要运行的命令

这里有crontab文件条目的一些例子:

30 21 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/apache/bin/apachectl restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/apache/bin/apachectl restart
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/apache/bin/apachectl restart
每一小时重启apache

* 23-7/1 * * * /usr/local/apache/bin/apachectl restart
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/apache/bin/apachectl restart
一月一号的4点重启apache

?