linux定时任务工具crontab

Posted by Hsz on May 10, 2017

定时任务

我们常有这样一种需求,每隔一段时间我们希望启动一个脚本让它实现一些信息收集工作并以此产生一些操作, 比如检查数据库中的数据量然后发送邮件,比如定期爬取数据保存进本地数据库等等.如果使用脚本语言比如python,node进行, 会要跑虚拟机,也就会额外占用资源,而且如果脚本多的话要管理起来也会比较麻烦.因此这种方案并不好用.

本文介绍的crontab则是相对靠谱的解决方案.

crontab服务会有用户区分,要管理不同用户的定时任务,可以使用-u xxx来指定用户.

我们以系统自带的获取本地时间程序date来作为例子,看如何创建一个定时任务.

定时任务配置文件

要创建定时任务必须配置crontab服务文件.使用crontab -e编辑当前用户的crontab服务文件(默认使用vim编辑)

定时任务的配置文件语法

定时任务配置文件中一行即为一项任务.每项任务按分,时,日,月,周共5位来定时,取值范围如下:

小时 星期
0-59 0-23 1-31 1-12 0-6 (取值范围,0表示周日)

同时可以使用一些通配符定义定时逻辑

通配符 说明
* 代表取值范围内的数字,通常用来作为占位符
/n 代表”每”隔多久
n-m 代表从某个数字到某个数字,
, 分开几个离散的数字

比如我们定义每小时的0到30分之间,每隔2分钟运行一次,那么可以写成这样

0-30/2 * * * * command

我们要运行的是这样的一个任务:

*/2 * * * * /usr/bin/env date >> now.txt

它的意思是每2分钟记录下一条当前时间到now.txt文件夹

定时任务的增删改查

  1. 启动crontab服务

    一般启动服务用 /sbin/service crond start 若是根用户的cron服务可以用 sudo service crond start,这里还是要注意下不同版本Linux系统启动的服务的命令也不同像我的虚拟机里只需用sudo service cron restart即可,若是在根用下直接键入service cron start就能启动服务

  2. 查看crontab服务是否已经运行

    ps -ax | grep cron

  3. 查看该用户下的crontab服务是否创建成功

    crontab -l

  4. 删除某个用户的cron服务

    crontab -r