定时任务Java编写综述
目前我所用过的定时任务机制主要分三类:OS级的Linux crontab命令方式、Java语言级的JDK自带API、第三方API接口如Quartz(当然,其他MVC框架如Spring基于Quartz实现了更人性化的API接口,此类接口一并归入Quartz类族)。
这三种方式相比,OS级不用专门开启监听器,占用系统资源较少,是定时任务首选的实现方式;JDK自带API主要是Timer和TimeTask,这些API提供的接口功能简单,往往不能满足用户定时任务设置需要;Quartz是Java语言编写的API,其可以单独部署,也可以作为系统的模块嵌入既有代码中,通过开启监听触发定时任务的方式实现,相对而言,特别是用此种方式开辟大量监听很耗资源。
下面分别介绍这三种常用的定时任务实现方式。
1. OS级的Linux crontab命令方式
crontab命令的功能是在一定的时间间隔调度一些命令的执行。
在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。
/etc/cron.deny 表示不能使用crontab 命令的用户
/etc/cron.allow 表示能使用crontab的用户。
如果两个文件同时存在,那么/etc/cron.allow 优先。
如果两个文件都不存在,那么只有超级用户可以安排作业。
每个用户都会生成一个自己的crontab 文件。这些文件在/var/spool/cron目录下,该文件里面的内容和对应用户显示的crontab -l 一致。
linux缺省会启动crond进程,crond进程不需要用户启动、关闭。 crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。
cron的调度文件有以下几个:crontab、cron.d、cron.daily、cron.hourly、cron.monthly、cron.weekly。如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab 或cron.d目录中。
1.1 Crontab语法
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)
其中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。常用命令如下:
crontab -l #查看你的任务
crontab-e#编辑你的任务
crontab-r#删除用户的crontab的内容
其中用crontab -e 添加要执行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。
添加的命令必须以如下格式:
* * * * * /command path
前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。各个字段之间用spaces和tabs分割。
前5个字段分别表示:
分钟:0-59
小时:1-23
日期:1-31
月份:1-12
星期:0-6(0表示周日)
还可以用一些特殊符号:
*:表示任何时刻
,: 表示分割
-:表示一个段,如第二端里: 1-5,就表示1到5点
/n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.
示例如下:
00 8,12,16 * * * /data/app/scripts/monitor/df.sh
30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh
10 8,12,16 * * * /data/app/scripts/monitor/check_ind_unusable.sh
10 8,12,16 * * * /data/app/scripts/monitor/check_maxfilesize.sh
10 8,12,16 * * * /data/app/scripts/monitor/check_objectsize.sh
43 21 * * * 21:43 执行
15 05 * * * 05:15 执行
0 17 * * * 17:00 执行
0 17 * * 1 每周一的 17:00 执行
0,10 17 * * 0,2,3 每周日,周二,周三的 17:00和 17:10 执行
0-10 17 1 * * 毎月1日从 17:00到7:10 毎隔1分钟执行
0 0 1,15 * 1 毎月1日和 15日和一日的 0:00 执行
42 4 1 * * 毎月1日的 4:42分执行
0 21 * * 1-6 周一到周六 21:00 执行
0,10,20,30,40,50 * * * * 每隔10分执行
*/10 * * * * 每隔10分执行
* 1 * * * 从1:0到1:59 每隔1分钟执行
0 1 * * * 1:00 执行
0 */1 * * * 毎时0分每隔1小时执行
0 * * * * 毎时0分每隔1小时执行
2 8-20/3 * * * 8:02,11:02,14:02,17:02,20:02 执行
30 5 1,15 * * 1日和 15日的 5:30 执行
1.2 & 后台执行命令
当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。如:
30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh &
在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。
不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:
如:command >out.file 2>&1 &
在这个例子中,2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。
相关推荐
Linux Crontab 定时任务 命令详解 Linux Crontab 是一个强大的定时...Linux Crontab 是一个功能强大且灵活的定时任务命令,通过编写 Crontab 文件,可以实现自动化管理和维护服务器,从而提高服务器的安全性和可靠性。
Linux中使用crontab命令实现定时任务 在Linux系统中,crontab命令是一个非常有用的工具,它可以帮助用户实现定时任务的执行。通过crontab命令,用户可以在指定的时间执行特定的命令或程序,这使得系统管理员可以更...
Linux 的定时任务 crontab 命令怎么用 Linux 的定时任务 crontab 命令是 Linux 系统中的一种非常重要的功能,它允许用户设置定时任务,自动执行指定的命令或程序。下面我们将详细介绍 crontab 命令的使用方法和...
### Linux定时任务命令之crontab #### Crontab简介 Crontab是Linux系统中一个非常重要的工具,用于在固定时间周期性地执行特定任务。通过crontab,管理员和用户可以设置脚本或命令在指定的时间自动执行,极大地...
Linux 系统中的定时脚本 crontab 是一个功能强大的工具,允许用户在指定的时间执行特定的命令或脚本。然而,在使用 crontab 执行 jar 文件时,如果输出结果包含中文字符,可能会出现乱码问题。本文将探讨该问题的...
在 Linux 中,可以使用 `crontab -l` 命令来查看当前用户的定时任务列表,可以使用 `crontab -e` 命令来编辑定时任务文件。 另外,Linux 还提供了 systemctl 命令来管理服务,包括 cron 服务。可以使用 `systemctl ...
Crontab是Linux系统中非常强大的自动化工具,能够帮助用户定时执行各种任务。掌握Crontab的格式和用法对于系统管理员和开发人员来说至关重要。通过本文的讲解,相信读者已经对Crontab有了更深刻的理解,并能灵活运用...
标题 "OS + Linux crontab / top / ntpdate / nmon" 提及了四个重要的 Linux 系统管理和监控工具,这些工具对于任何系统管理员来说都是必不可少的。下面将详细介绍这些工具及其在Linux操作系统中的作用。 1. **...
在Linux系统中,Crontab...总结来说,Linux CentOS 7的Crontab离线安装包提供了在无网络环境下安装和管理定时任务的能力,通过RPM包管理方式,我们可以方便地在系统中部署和配置Crontab,实现自动化维护和管理工作。
springboot的定时任务配置和linux的crontab一样例子.zipspringboot的定时任务配置和linux的crontab一样例子.zipspringboot的定时任务配置和linux的crontab一样例子.zip
NULL 博文链接:https://caoyaojun1988-163-com.iteye.com/blog/1698192
在 Linux 中使用 crontab 自动清除日志的方法是通过编写一个 shell 命令,然后在 cron 中编写定时任务。例如,以下是一个删除 30 天前的日志文件的 shell 命令: find /opt/soft/log/ -mtime +30 -name "*.log" -...
在Linux系统中,`crontab` 是一个用于设置周期性被执行的任务的命令,它允许用户根据特定的时间间隔安排任务的执行。在CentOS 6.9这样的旧版本系统中,有时可能会遇到`yum`无法在线获取或更新`crontab`的情况。这...
Linux 中的 crontab 命令是一种定时任务管理工具,允许用户在固定时间或固定间隔执行程序。crontab 命令的基本格式为:`* * * * * command`,其中每个星号 (`*`) 代表不同的时间单位,分别是分钟、小时、日期、月份...
Linux 定时执行 Crontab 命令使用介绍借鉴 Linux 系统中的 Crontab 命令是一个非常有用的工具,用于在指定的时间执行某个任务或命令。Crontab 命令是基于 Cron 服务的,它可以让用户在指定的时间执行某个任务,例如...
本文将详细介绍如何在 Linux 中使用 crontab 命令来设置定时任务,并对其格式、参数和使用方法进行详细解释。 crontab 命令 crontab 命令是 Linux 中用来设置定时任务的命令。其基本语法为:`crontab [选项] [命令...
Crontab是Linux系统中用于调度周期性任务的命令,它可以按照设定的时间间隔运行指定的脚本或程序。Crontab配置文件包含一系列规则,每条规则定义了一个任务的执行时间及要执行的命令。 三、配置ThinkPHP 5.1的...
Linux Crontab 是一个强大的计划任务系统,允许用户在特定的时间和日期执行指定的命令或程序。Crontab 使得用户可以轻松地安排和管理计划任务,从而提高工作效率和自动化程度。 Crontab 命令 Crontab 命令是 ...