Linux(centos 6.5) 调用java脚本以及定时执行的脚本实例 一、调用java程序脚本(默认已经搭建好了Java环境) 1、jdk 安装路径 /usr/jdk/jdk1.7/…… 2、java 程序路径 /usr/jdk 3、类名:Test.java(有主函数的类名) 4、调用java类的脚本,注意脚本的后缀是.sh 5、脚本内容: (1)#!/bin/bash // #! 特殊符号,说明这个脚本是由/bin 目录下的bash这个shell来解释并将解释后的内容给kernel来执行 (2)cd /usr/jdk (3)/usr/jdk/jdk1.7/bin/javac Test.java (4)/usr/jdk/jdk1.7/bin/java Test 6、脚本名称: testshell.sh 7、执行这个脚本来编译java程序,解释执行jvm机器码 8、执行脚本command: sh testshell.sh 二、定时执行任务 1、linux有个系统级的定时任务服务,叫cron,终端里的命令是crontab,使用他就可以定时执行脚本 2、编写定时任务的文件叫crontab 在 /etc/目录下 3、打开方式有两种,一种是用户级别,一种是系统级别:crontab -e 用户级别 vim crontab 系统级别 4、有两种打开方式也就有两种查看方式,crontab -l 查看用户级别的定时任务 more /less/tail/head 查看系统级别的任务 5、crontab文件中定义的一些 属性:
SHELL=/bin/bash (2)、PATH变量指定了系统执行命令的路径。 (3)、MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户。 (4)、HOME变量指定了在执行命令或者脚本时使用的主目录。
6、定时任务的格式: crontab中的一个实例,这里是使用vim 编辑的所以是系统级的 */1 * * * * root sh /usr/jdk/testshell.sh 解释: 通过crontab 自带的这个我们可以清晰的看到定时任务的格式,所以就不多说了, 上面自己定义的两个任务都是每一分钟执行一次任务,而用户是root 上面是没一分钟执行一次: 下面是每小时执行一次: 0 * * * * rootsh /usr/jdk/testshell.sh // 每小时的0 分钟执行 0 */1 * * * rootsh /usr/jdk/testshell.sh // 每小时的0 分钟执行 这两种方式都是定义每一小时的“0”分钟执行一次。 当然两小时一次也一样:0 */2 * * * rootsh /usr/jdk/testshell.sh * */2 * * * rootsh /usr/jdk/testshell.sh 这种方式有的没问题有的没有问题注意使用 在指定的时间范围内每几分钟执行一次: */10 4-18 * * * root sh/usr/jdk/testshell.sh // 从凌晨4点到下午6点每10分钟执行一次。 每一天的指定时间执行一次: 0 0 * * * rootsh /usr/jdk/testshell.sh // 每天的0点 0 分执行一次 10 14 * * * rootsh /usr/jdk/testshell.sh // 每天的14点10分执行一次
10 10,11,14 root sh /usr/jdk/testshell.sh // 每天的10、11、14点10分执行一次 每周指定日期时间执行一次: 0 0 * * 0 rootsh /usr/jdk/testshell.sh // 每周日的0点0分执行一次
01 19 * * 1 rootsh /usr/jdk/testshell.sh // 每周一的19点1分执行一次
注意:0 和7 表示的的是周日 每月指定日期时间执行一次:
0 0 1 * * root sh /usr/jdk/testshell.sh // 每月的第1天的0时0分执行一次 7、 到这里定时任务就完成了,但不一定会成功执行,下面说说像我这种菜鸟会经常犯的错误 8、如果定义后没有执行定时任务,则可以去/var/spool/mail 查看 相应的日志,如果报错则说明脚本写的有问题,注意这里出错概率比较大的就是路径的问题,所以在写脚本的时候可以写全路径来试试。
9、如果没报错,则说明没有执行定时任务,cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
11、时间的设定:
分钟 (0-59)
三、在写调用Java的程序脚本时会有个 -cp 这个是干嘛的那,那我们来看看:
1、-cP :讲解 2、完整实例展示:
source /home/newsgroup/.bash_profile com.fang.autopub/NewsAutoPublishing
3、实例分析: (1)、
source命令用法:
(2)、 (3)、 -cp 指定了这些包所在的具体路径 最下面的包名称+ 类名称组成完整的路径,但是你会发现,包名称和类名称之间不是使用“,” 而是“/”
四、错误分析: 写的脚本有可能一次不会成功,所以我们要对错误进行分析,而crontab 中的定时任务有没有执行怎么查看那,具体如下: 1、查看日志,有没有执行你写的定时任务,日志路径: /var/log/cron 这个就是定时任务的日志,打开后如果能看到你的命令在日志中说明定时任务执行了。错误来自你写的脚本 2、如果日志文件中没有,则说明没有执行你的定时任务,这时我们要重启crond服务: /etc/init.d/crond restart
总结:在 Linux 底下的 crontab 会自动的帮我们每分钟重新读取一次 /etc/crontab 的例行工作事项,但是某些原因或者是其它的 Unix 系统中,由于 crontab 是读到内存当中的,所以在你修改完 /etc/crontab 之后,可能并不会马上执行,这个时候请重新启动 crond 这个服务即 /etc/init.d/crond. (责任编辑:IT) |