crontab·定时任务使用笔记

自动执行

大部分时候,我们需要定时任务来帮我们自动执行一些操作,比如清理几个月之前的日志、项目上线等。

crontab

crontab 提供了非常简单实用的使用体验。crontab(crond table) 管理定时任务非常简单,只需要编辑一个文件就可以了。这个文件里,每一行都代表:某月某周某日某时某分要执行的任务。
通过 crontab -e 命令直接打开这个文件。

第一次打开时可能会让你选用什么编辑器来编辑,命令行里的编辑器通常与我们日常使用的有很大的不一样,这里建议使用 gedit 来编辑,当然如果没用过 gedit,需要先百度查查其用法(很简单)

看看配置文件

第一次打开,这个文件里应该是一堆注释(井号后面是注释),用来介绍 crontab。可以直接把他们都删掉,然后输入并保存:(注意空格哦)

* * * * * echo hello >> ~/crontab.test

这一行分两部分,第一部分是前面的五个星,用来表示任务执行的时间,后面再详细解释。第二部分是定时被执行的任务:输出“hello”到家目录下的 crontab.test 文件(这个文件需要自己手动创建,命名什么的随意)。

文件保存后,会立即生效,不需要其他操作

也许唯一的难点在于理解和使用那五颗星。
如果直接解释这些星星的意义或者使用规则,那肯定是难以理解的,先看看下面这些例子:

10 * * * * echo hello >> ~/crontab.test
# 每个小时的第 10 分钟执行一次
# 比如 八点十分,九点十分,每天,每月,每周都会执行
10 8 * * * echo hello >> ~/crontab.test
# 每天的八点十分都会执行一次
10 8 1 * * echo hello >> ~/crontab.test
# 每月一号的八点十分执行一次
10 8 1 1 * echo hello >> ~/crontab.test
# 每年的一月一号的八点十分执行一次
10 8 * * 1 echo hello >> ~/crontab.test
# 每周一的八点十分执行一次
实践出真知

上面是一些实践,现在我们知道了那些星星的意义:

  • 每一颗代表一个时间单位

注意:第五颗星的取值范围是 [0, 1, 2, 3, 4, 5, 6],周日是零

另外……

如果我想每两小时执行一次呢?
10 */2 * * * echo hello >> ~/crontab.test

注意 */2 之间没有空格

上面的一行代表:零点、两点、四点、六点……的第十分钟(比如六点十分)执行一次。也就是能被二整除的小时执行一次

注意:设定每两小时执行一次的任务时,必须指定分钟,否则,零点、两点的每分钟都会执行一次(一点三点时不会执行)

如果我想特定的几个时间执行呢?
10 8 1,2,3 * * echo hello >> ~/crontab.test

上面代表:每月的一二三号的八点十分执行一次

日志

定时任务会自动记录日志,存储在/var/log/cron.log

但是 ubuntu 默认是关闭了这个日志的,需要进行一下操作:

  • 编辑日志服务的配置文件:/etc/rsyslog.d/50-default.conf
  • 把 cron 那一行的注释去掉,并保存退出
  • 重启日志服务:sudo service rsyslog restart
发布了44 篇原创文章 · 获赞 25 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/csdn372301467/article/details/103833702