Linux下定时运行java程序

一,打包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_31
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

FTP_HOME=/opt/ftpcounter

sed -i "/OVER/ s/=.*/=0/g" $CONFIG
cd $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.sh
dos2unix: converting file dbtodb.sh to UNIX format ...


三,监控程序。

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

#!/bin/bash

pidfile=/tmp/scoreCacl.pid

if [ -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
   done
fi

echo $$ >$pidfile

#导入环境变量
export LANG="en_US.UTF-8"
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

cd java
java -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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值