Linux crontab定时器设置(定期执行java程序)(转)
|
* * * * * command to be executed
- - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +------- month (1 - 12) | | +--------- day of month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59) |
环境:
RedHat Linux
JDK1.6
功能说明:
每天早上2点钟执行一次java程序。
操作步骤:
1、首先,将java程序打包成为jar包,包名为unarchivegzipandinsertintodb2_0_1.jar,注意要设置该jar包的MANIFEST.MF的Main-Class的类,
将jar包复制到/usr/local/目录下,同时将该jar包所依赖的jar包也复制到/usr/local/目录下,如test.jar;
2、在/usr/local/目录下创建shell脚本,脚本名称auto.sh,脚本内容为:
#!/bin/bash
cd /usr/local/
#!/bin/sh
cd `dirname $0`
/usr/local/jdk1.6.0_25/bin/java -Xms256M -Xmx1024M -cp /usr/local/jdk1.6.0_25/lib/tools.jar:/usr/local/jdk1.6.0_25/lib/dt.jar:/data/appLog/UnArchiveGzipAndInsertIntoDB2_0.1/UnArchiveGzipAndInsertIntoDB2/../lib/activation.jar:/data/appLog/UnArchiveGzipAndInsertIntoDB2_0.1/UnArchiveGzipAndInsertIntoDB2/../lib/advancedPersistentLookupLib-1.0.jar:/data/appLog/UnArchiveGzipAndInsertIntoDB2_0.1/UnArchiveGzipAndInsertIntoDB2:/data/appLog/UnArchiveGzipAndInsertIntoDB2_0.1/UnArchiveGzipAndInsertIntoDB2/../lib/systemRoutines.jar:/data/appLog/UnArchiveGzipAndInsertIntoDB2_0.1/UnArchiveGzipAndInsertIntoDB2/../lib/test.jar::.:/data/appLog/UnArchiveGzipAndInsertIntoDB2_0.1/UnArchiveGzipAndInsertIntoDB2/unarchivegzipandinsertintodb2_0_1.jar: test.unarchivegzipandinsertintodb2_0_1.UnArchiveGzipAndInsertIntoDB2 --context=Default "$@"
说明:
/usr/java/jdk1.6/是java安装路径
java命令后面必须要加入-cp参数,cron在执行时不加载系统环境变量,如果不加这个参数,程序不会正常执行,
即使命令行可以正确执行,但在cron调用时也会出现问题。
3、使用crontab命令,输入如下内容:
00 02 * * * /usr/local/unarchivegzipandinsertintodb2_0_1.sh
说明:
每天早上两点钟执行/usr/local/unarchivegzipandinsertintodb2_0_1.sh脚本,crontab的语法格式表达的含义可以参考相关手册。
最近经常碰到关于crontab不能执行的,初步总结了有以下几个原因:
第一,脚本的原因:大多数情况下,我们要相信科学,相信计算机,不是有鬼,就是我们的脚本的问题,这种问题导致crontab不能执行的概率占到 70%以上。因为程序执行到某一步导致crontab终止执行,我就碰到一次在迁移代码的时候将数据库连错了。导致无法访问而死在那里了。
第二,执行环境问题,当我们碰到第一情况下,一般都可以通过手动执行程序将问题扼杀在摇篮里,一般情况下高手是不应该犯第一种错误的。问题是当我们 手动执行成功而crontab不能执行的时候,笔者碰到一次就是执行环境的问题,例如相关路径的设置问题。解决方案:在代码最前面执行 source /home/user/.bash_profile
第三,系统时间不正确。这种问题最好理解,也是比较常见和隐蔽的问题,解决方案:date -s ********
第四,就是我们的脚本是否有可执行权限。必须保证执行脚本的用户有执行改文件的权限。
第五,crontab 守护进程死掉了。这种情况是极少发生的,但也不排除,当我们实在是找不到其他原因的时候可以用。解决方案:重启该进程。
另外,介绍大家一个关于如何查看crontab最修修改时间的方法:
进入目录/var/spool/cron/里面会有N个用户名为文件名的文件,只要建立过crontab的用户在这里都会有以该用户名为文件名的文件,该文件的最后修改时间就是该用户的的crontab的最后修改时间。
Linux crontab定时器设置(定期执行java程序)(转)的更多相关文章
- Linux 下用 crontab 设置定时执行python 程序
Linux 下用 crontab 设置定时执行python 程序 方法/步骤 1,先大概了解crontab,/etc/crontab 就是crontab 的配置文件. crontab命令详解可以查 ...
- Linux中crontab无法执行java程序的问题
Linux中crontab无法执行java程序的问题 jdk环境变量配置问题:可以用全路径来解决: 竟然是kill -9之后,后面的脚本都不运行,这个还没有找到原因啊: 即便是系统级别的 ls 命令, ...
- 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序
如何用javac 和java 编译运行整个Java工程 (转载) http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...
- CentOS下crontab执行java程序
阿里云CentOS收不到邮件 在crontab里配置执行脚本,脚本用来执行java程序,死活不执行.单独执行脚本可以运行. 查看crontab的日志文件,/var/log/cron,发现没有收到cro ...
- Linux上设置开机启动Java程序
在Linux上设置开机启动Java程序,例如:test.jar 在Linux上启动Java程序的命令: nohup java -jar test.jar >/dev/>& & ...
- crontab中执行java程序的脚本
测试场景说明(操作系统:centos7): 有一个bash脚本,脚本内容是执行某个java程序,该脚本为 /data/project1/start.sh crontab -e,添加了以下任务: * * ...
- 在命令符模式下编译并执行Java程序
对于Java初学者,建议使用纯文本文件来编写Java程序,并在命令符模式下使用工具程序编译和执行Java程序.使用javac工具编译.java,使用java工具执行.class.(推荐sublime编 ...
- cmd执行Java程序
先创建一个文本,里面内容为 public class hello{ public static void main(String[] arg) { System.out.println("H ...
- JVM执行Java程序时内存的划分
Java虚拟机在执行Java程序过程中会把它所管理的内存区域划分为若干个不同的数据区域. Java虚拟机所管理的内存包括以下几个运行时区域: 1.程序计数器(Program Couter Regist ...
随机推荐
- 编译Linux-4.9.9内核流程记录
本文部分资料出自: http://www.cnblogs.com/xiaocen/p/3717993.html 首先下载代码: https://www.kernel.org/pub/linux/ker ...
- UEditor1.4.3.3整合Spring MVC和七牛
[前言] 项目中涉及将UEditor上传服务器整合进已有的基于Spring MVC的服务中,并且将上传到本地改为上传到七牛,看似简单的一个需求,实际做起来还是遇到了一些困难.在这里分享一下经验-- 七 ...
- EntityFramework 6.x多个上下文迁移实现分布式事务
前言 自从项目上了.NET Core平台用上了EntityFramework Core就再没碰过EntityFramework 6.x版本,目前而言EntityFramework 6.x是用的最多,无 ...
- oracle pl/sql 控制结构(分支,循环,控制)
一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希 ...
- 【黑马18期Java毕业生】黑马程序员Java全套资料+视频+工具
Java学习路线图引言: 黑马程序员:深知广大爱好Java的人学习是多么困难,没视频没资源,上网花钱还老被骗. 为此我们历时一个月整理这套Java学习路线图,不管你是不懂电脑的小 ...
- 我的Spring学习记录(三)
学习了AOP之后就可以应用一下了,所以这次我们了解一下Spring的声明式事务. 事务在我们的很多方面都可以体现,就拿我们平时的买卖活动,或者是银行的转账来说,这些活动要么是成功,要么是失败,比如:张 ...
- Android shared_preference操作
实例化SharedPreferences对象 //test :想要打开的SharedPreferences文件名 //Activity.MODE_PRIVATE:操作模式 MODE_PRIVATE | ...
- 常见SQL分页方式效率比较
结一下. 1.创建测试环境,(插入100万条数据大概耗时5分钟). ,) ) )) ),end 2.几种典型的分页sql,下面例子是每页50条,198*50=9900,取第199页数据. id id ...
- zoj 1108 FatMouse's Speed 基础dp
FatMouse's Speed Time Limit: 2 Seconds Memory Limit:65536 KB Special Judge FatMouse believe ...
- RabbitMQ与AMQP协议
AMQP(Advanced Message Queuing Protocol, 高级消息队列协议)是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 ...