Linux工具命令之crontab

小命令要学好,请让我看到你翘起来的嘴角

Posted by 夏敏的博客 on October 13, 2018

前言

在平时工作中,我们经常需要执行一些定时任务。 比如我的电脑每天晚上都会在凌晨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 号分别进行,总之会出乎你的意料之外的。

总结

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

作者:Anderson大码渣,欢迎关注我的简书: Anderson大码渣