Linux crontab定时任务的使用

news/2024/7/10 21:46:12 标签: linux, 服务器, 开源, unix

crontab是Unix和Linux用于设置周期性被执行的软件包,服务器上很多系统任务都会周期性执行,比如重启某个服务器,定期清理日志等。这就可以使用crontab。将任务注册到cron进程查看的配置文件中,这样cron周期性地查看这些配置文件时,将会执行设置好的定时任务。在实际开发和部署中,大部分程序都不需要定时自维护,只需要写好自己的业务逻辑,通过crond这个工业级程序调度即可。


cron

cron是一个系统Daemon进程,一般挂在init下。笔者的kali2中cron这个进程就是挂在init下。这个进程主要工作是定期检查用户注册的任务信息,并调用相应的任务执行。所以当用户新加入了定时任务后,也不需要重启此进程,cron会自动检测和维护一个作业列表。


crontab

这是一个cron注册信息的工具。cron不提倡直接编辑注册信息文件,使用这个crontab可以比较容易的完成注册工作。注意,这个工具是针对各个用户的,并非针对系统管理员,对于系统管理员,则可以直接编辑/etc/crontab文件进行任务配置,作系统级配置。


简单使用

假设如下命令希望每天每隔一分钟执行一次:

date >> /var/log/date_testing
则我们可以使用crontab来注册这一任务

crontab -e
首次打开可能会需要你选择默认的编辑器,自己选择即可,我选择的vim basic。之后就可以开始写上配置信息:

* * * * * date >> /var/log/date_testing

上例五个星号代表运行时间,分别是 :分 时 日 月  每周的日。星号代表任意值,也就是说,任意年,任意月,任意时,任意分,任意日,都执行后接的命令。关于时间格式,下文讲解。保存文件退出后,使用如下命令将会看到刚才注册的任务:

crontab -l
这样,查看日志文件/var/log/date_testing即可看到每分钟执行的输出。 注意:在一般情况下,若没有设置命令输出重定向(date是有输出的,输出到stdout),则以邮件的形式发送到运行的用户信箱。久而久之这些信息会非常大,可能需要人工处理。所以妥善管理任务程序的输出是比较好的选择


时间格式
上文例子中提到了任务注册的时间格式。以下是具体的时间格式讲解。

字段值范围
minute0-59
hour0-23
day of month0-31
month1-12或name
day of week0-7或name

除了具体值,指定在具体某一时刻(如分字段的6代表每小时第6分钟,月字段的3代表每年的3月),还可以使用通配符和其他描述符号。

*代表取任意值,如在分字段上标示任意分钟都会执行,每一分钟;在月字段上表示每一月都会执行。

-代表取某个范围(短横线,减号)。如在时字段上取值1-18表示每天1时到18时,这期间每个小时。分字段上的5-10表示每小时的第五分钟到第十分钟,这期间每分钟。

,代表具体值枚举(逗号)。比如分字段上的2,3,4,8表示每小时中第二、第三、第四、第八分时刻。

/n代表每隔 n 单位间隔,n 代表间隔多长,例如每五分钟进行一次,则可在分字段标示0-59/5,在0-59时间段里每五分钟里。这个符号一般与上面三个符号连用。

注意:周与日月不能同时设定,这样可能cron无法准确获取时间。周字段中0代表周天。

上面可能说的模棱两可,下面有些例子,可以帮助理解:

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日和 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 每分钟 执行
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 执行
例子是网上找的,但也都可以用,笔者已经检查过。


其他

这里主要说一些自己查到和翻阅manpage看到的内容
1) Debian中的cron增加了一个系统级任务特性,这个特性一般便于系统管理,在/etc/目录下有基于时(cron.hourly)、日(cron.daily)、月(cron.monthly)、周(cron.weekly)的任务注册文件,系统级任务都将记录注册在这些文件中。并且作业通过run-parts调用。


2)当使用crontab注册任务时,是为用户注册,非管理员,当然管理员也可以通过这个工具注册。注册的作业并不是存放在/etc/crontab文件,而是按照用户不同,在目录/var/sqool/cron下创建以用户名命名的目录,并将注册信息填写在此目录的文件中。


3)/etc/crontab文件一般给管理员用户查看。


4)在Debian下cron的日志写在syslog中,可以在/var/log/syslog中查看。


写在后面

本文中有很多信息来自互联网,例子都经过测试,在kali2系统(基于Debian)上无误。若有不足或错误,欢迎各位指正。



http://www.niftyadmin.cn/n/983401.html

相关文章

MongoDB 分片

分片是MongoDB的扩展方式,通过分片能够增加更多的机器来用对不断增加的负载和数据,还不影响应用. 1.分片简介 分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不同的机器上,不需要功能 强大的大型计算机就可以存储更多的数据,处理更大的负载. 使用…

10 分钟了解 Apache Nifi 在物联网的使用

多年来,物联网(IoT)一直存在于技术领域。有许多有趣的技术正被投射为“物联网的解决方案”。在本文中,将讨论IoT和NiFi实验。 什么是物联网? 根据维基百科的定义 - 物联网(Internet of Things&#xff0…

五分钟掌握TDengine时序数据的保留策略

小 T 导读:在《这几个神秘参数,教你TDengine集群的正确使用方式》这篇文章中,我们讲到了如何利用合理的配置vnode完成TDengine的数据分片,本期我们来继续讲讲TDengine如何从时间维度去对数据进行管理。 首先,先看看官网…

为什么使用 TDengine 处理时序数据时,可以不用 Redis?

一个完整的大数据处理平台往往需要具备缓存功能。缓存就是将从数据库中获取的结果暂时保存起来,这样在下次使用的时候就无需重新到数据库中获取,从而降低了数据库的压力。好的缓存方案要能解决性能、稳定性、可用性等问题。Redis 就经常作为缓存层的组件…

一个mount问题解决办法,关于partprobe命令

背景:做了lvm,安装kvm之后,重启机器,挂载的盘符丢失,宠幸挂载的时候出现如下问题: rootubuntu:/var/lib/libvirt# mount /dev/VolGroup00/LogVol00 /var/lib/libvirt/imagesmount: special device /dev/Vol…

面向数据科学的DigitalOcean和Docker

创建基于云的数据科学环境以进行更快的分析 (Creating a cloud-based data science environment for faster analysis) There are times when working on data science problems with your local machine just doesn’t cut it anymore. Maybe your computer is old, and can’…

nifi-集群搭建,新增用户

NIFI 简介 1、NIFI 的概念 1.1 起源:NIFI是为了自动化的处理和管理系统之间的数据流而产生的,基本设计概念与基于流的编程[fbp]的主要思想密切相关 1.2 nifi核心概念 FlowFile:FlowFile表示通过系统移动的每个对象,包含数据流…

涛思数据教师节专属礼物,“不焦虑打工套装”请查收!

转眼间时钟又拨到了9月10日这一天,一年一度的教师节来临了。 从古至今,师者,一直都是传道授业解惑的存在。人们终其一生总会遇到很多的老师,在学生时代,老师往往都是站在三尺讲台之上,兢兢业业地同学生们分…