Linux工具命令之crontab

前言

在平时工作中,我们经常需要执行一些定时任务。 比如我的电脑每天晚上都会在凌晨1点开始sync代码,并执行编译。4点又会sync另一份代码。执行另一个编译任务。这无疑会提高我们白天的工作效率,因为每天到公司都不再需要同步代码, 并且已经有一份编译好的最新代码了。

当然,定时任务可以干的远不止这些,你可以定时跑monkey啊,定时检查东西发邮件等。

cron服务

Linux系统是由一个叫cron的服务来控制定时任务的。 Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。 (我们可以使用 service --status-all来查看系统有哪些service运行,里面有这个cron服务, 直接查看该服务状态 service crond status

由于用户自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab (即 cron命令的table, 连起来就是crontab)

系统的cron服务会去读取以下几个路径的配置文件:

  1. /var/spool/cron/crontabs/ 各个用户的配置文件
    我们通过sudo cat /var/spool/cron/crontabs/(用户名) 查看当前用户的定时任务文件
  2. /etc/crontab 系统的crontab
  3. /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

那么crontab命令就是帮助我们配置这个表并生效的。

crontab命令

ok, 我们在终端敲下: crontab --help

usage:  crontab [-u user] file
 crontab [ -u user ] [ -i ] { -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)

那我们就来编辑一下, crontab -e , 会出来一个vi的编辑窗口,里面编辑的是我们的配置文件。我们配置一条1点1分执行一个脚本,如下配置保存即可。

#分 时 日  月 周      |<==============任务的完整命令行
01  01  *  *  *       bash -l -c "~/xiamin-doc/task/a1-build.sh >> /tmp/build-a1.log"

当我们保存了上面的配置后, 其实就保存在 /var/spool/cron/crontabs/(用户名)这个配置文件里了。并且cron服务会去读取表里额配置项执行了。

注意点:周与日月不可同时并存

30 12 11 9 5 root echo "just test" <==是错误的配置

系统可能会判定每个星期五作一次,或每年的 9 月 11 号分别进行,总之会出乎你的意料之外的。

总结

到此我们已经知道怎么去配置定时任务了,以及其原理了。 接下来就是大家编辑自己脚本,让其能够成为我们的工作小帮手了!

推荐阅读更多精彩内容