Linux下定时运行java程序

来源:互联网 发布:淘宝设计师助手官网 编辑:程序博客网 时间:2024/05/16 13:50

一,打包java项目。

1、  在MyEclipse中将java程序运行一遍得到class文件后,右键点击dbtodb工程,选择Export:点击next:

在JAR file :选择jar包存放的路径及jar包名字,点击finish。Jar包导出完成。

2.在c盘找到刚导出的jar包,我们将jar包放到一个dbtodb的文件夹下,打开jar包:


打开META-INF:


这里将MANIFEST.MF解压出来,然后对其进行配置,内容如下:

Manifest-Version:1.0

Main-Class:caic.dbtodb    指定程序运行的入口类,例如本程序内运行的main()在dbtodb.class中,配置为:包名.类名。

注意:类名后不要加class扩展名

Class-Path: ./lib/ojdbc14.jar./lib/postgresql-8.4-701.jdbc3.jar ./lib/jdom.jar

这里配置的是程序所用到的jar包,我们将所用到的jar包放到dbtodb.jar同目录下得lib文件夹下,如图:


配置完成后。由于jar包读取xml文件和java程序读取xml文件的路径有所不同,本程序读取xml文件是用SAXbuilder实现,所以将xml配置文件放到dbtodb.jar的同目录下就可以读取到,如图:

到此导出jar包及配置完成。

二,linux下面的shell脚本。

1. 在dbtodb文件夹下新建一个ftpcounter.sh,脚本内容为 ,我要执行的是FtpCounter.jar。

#!/bin/bash#导入环境变量export LANG="en_US.UTF-8"export JAVA_HOME=/usr/javak1.6.0_31export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarFTP_HOME=/opt/ftpcountersed -i "/OVER/ s/=.*/=0/g" $CONFIGcd $FTP_HOME java -jar $FTP_HOME/recommend2_2014_11_5.jar && echo "执行recommend2_2014_11_5.jar完成!" && sed -i "/OVER/ s/=.*/=1/g" $CONFIG || echo "执行FtpCounter.jar失败!"echo "【`date +%Y-%m-%d_%H:%M:%S`】统计程序运行完毕,等待下次执行."

首先需要导入java的环境变量,如果想要在执行中文的时候不出现乱码,还要导入中文编码。之所以要导入这些内容,是因为crontab定时程序调用脚本时,系统的环境变量是没有加载的。
其次执行jar的命令是java -jar 加jar文件名称就可以了,这个命令是跨平台的。

2.将dbtodb文件夹放到linux服务器上的usr/目录下


3.对dbtodb.sh赋权限,具体操作如下:

[root@bidev /]# cd /usr/dbtodb[root@bidev dbtodb]# chmod 777 dbtodb.sh

4.由于Windows于linux编码格式不同,需要对dbtodb.sh进行编码转换,具体操作如下:
[root@bidev dbtodb]# dos2unix dbtodb.shdos2unix: converting file dbtodb.sh to UNIX format ...


三,监控程序。

在linux下面执行java程序的时候有时候会莫名其妙的自动停止,下面我加了一个监控脚本。叫作ftpcounterwatch.sh。

#!/bin/bashpidfile=/tmp/scoreCacl.pidif [ -e $pidfile ]then   pid=`cat $pidfile`   pid_ps=`ps -ef|grep $pid|awk '{ print $2 }'`   for apid in $pid_ps   do        if [ $apid -eq $pid ]        then                exit        fi   donefiecho $$ >$pidfile#导入环境变量export LANG="en_US.UTF-8"export JAVA_HOME=/usr/local/jdkexport PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarcd javajava -jar recommend2.jar && echo "!!!!!!!"echo "【`date +%Y-%m-%d_%H:%M:%S`】统计程序运行完毕,等待下次执行."rm -f $pidfile

四,定时器的设置。

1.在控制台上输入以下命令

crontab -e

2.按i键编辑这个文本文件,输入以下内容,每天凌晨2:00执行该任务并将任务日志输入到/usr/dbtodb/log.txt
00 02 * * * /usr/dbtodb/dbtodb.sh &>/usr/dbtodb/log.txt

 按esc键退出编辑,输入wq回车保存

3.启动定时服务
[root@]# service crond stop[root@]# service crond start


0 0
原创粉丝点击