0%

Cron与crontab简谈

前言

想要制作一个定时发送邮件的小功能,因此需要使用到Linux的定时任务。

通过了解,发现了Cron与Crontab来进行定时任务的实现

什么是Cron?

工具型软件cron是一款类Unix操作系统下的基于时间的任务管理系统。用户们可以通过cron在固定时间、日期、间隔下,运行定期任务(可以是命令和脚本)。cron常用于运维和管理,但也可用于其他地方,如:定期下载文件和邮件。cron该词来源于希腊语chronos(χρόνος),原意是时间。

——维基百科《Cron》

什么是crontab?

crontab命令常见于Unix类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

——百度百科《crontab》

参考文章

用crontab每隔1分钟执行一个命令行脚本

Linux crontab 命令

在线Cron表达式生成器

内容

基本运行命令

cron是一个定时执行工具,与大多数linux工具一样,我们可以通过如下命令能对其进行控制:

  • service cron start

    启动cron服务

  • service crond stop

    关闭cron服务

  • service crond restart

    重启cron服务

  • service crond reload

    重新载入cron服务配置

crontab表详解

通过在表中添加相关参数,我们便可以将相关脚本通过定时器进行定时运行

  • crontab -l

    列出当前crontab表中的内容

  • crontab -r

    移除crontab表

  • crontab -e

    可以使用系统中内置的编辑器,进入crontab表中,对表中内容进行编辑

  • crontab -i

    可以移除crontab,会跳出系统信息让你再次确定是否移除crontab

crontab表时间格式说明

1-3表示123
1-9/2表示13579

1
2
3
4
5
6
7
8
9
每小时执行     0 * * * *

每天执行 0 0 * * *

每周执行 0 0 * * 0

每月执行 0 0 1 * *

每年执行 0 0 1 1 *
1
2
3
4
5
6
7
8
*    *    *    *    *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

因此,如果我们想让一个脚本每十分钟执行一次,那么可以这么设置:

*/10 * * * * 运行方式 脚本的绝对地址

设定cron的权限
/etc/cron.allow /etc/cron.deny

系统首先判断是否有cron.allow这个文件,如果有这个文件的话,系统会判断这个使用者有没有在cron.allow的名单里面,如果在名单里面的话,就可以使用cron机制。

如果这个使用者没有在cron.allow名单里面的话,就不能使用cron机制。

如果系统里面没有cron.allow这个文件的话,系统会再判断是否有cron.deny这个文件,如果有cron.deny这个文件的话,就会判断这个使用者有没有在cron.deny这个名单里面,如果这个使用者在cron.deny名单里面的话,将不能使用cron机制。

如果这个使用者没有在cron.deny这个名单里面的话就可以使用cron机制。 如果系统里这两个文件都没有的话,就可以使用cron机制

添加脚本文件到目录中

/etc/crontab中,存放着四个文件夹(/cron.hourly cron.daily cron.weekly cron.monthly)分别代表着每小时执行一次,每天执行一次,每周执行一次,每月执行一次

在到达了指定的时间后,系统便会对其进行自动执行

尾言

仅仅作为一次记录

-------------我也是有底线的哦如需更多,欢迎打赏-------------