技术交流QQ群:1027579432,欢迎你的加入!

一、crontab的使用

    1. crontab简介
    • crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从输入设备读取指令,并将其存放于crontab文件中,以供之后读取和执行。通常,crontab存储的指令被守护进程激活,crond为其守护进程,crond常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。
    • 通过crontab命令,可以在固定的间隔时间执行指定的系统指令或shell脚本程序。时间间隔的单位可以是分钟、小时、日、月、周的任意组合。
    1. crontab使用
    • 通过下面的一个命令来添加一个计划任务:
      crontab -e
    • 第一次启动会出现提示界面,需要选择编辑的工具,输入/usr/bin/vim/basic对应的数字,来选择比较熟悉的vim编辑器。出现的vim编辑器有crontab文档编辑的介绍,具体的格式与参数可见下图:


      crontab使用.png
    • 点击i键,选择编辑器的插入模式,在最后一排输入下面的命令,该任务是每分钟会在/home/cdl目录下创建一个以当前年月日时分秒为名字的空白文件:
      */1 * * * * touch /home/cdl/$(date +%Y%m%d%H%M%S)
    • 注意:%在crontab文件中,有结束命令行、换行、重定向的作用,前面加\符号是转义的作用。否则,%符号将执行其结束命令行或换行的作用,并且其后的内容会被做为标准输入发送给前面的命令。
    • 然后,按esc键退出插入模式,按:进入命令行模式,输入wq回车,退出vim编辑器。此时,可以通过crontab -l查看添加的任务。
    1. 启动cron的守护进程
    • 虽然添加了任务,但是如果cron的守护进程并没有启动,它根本都不会监测到有任务,当然也就不会帮我们执行,可以通过以下两种方法来确定我们的cron是否成功的在后台启动。
      ps aux | grep cron 或 pgrep cron
    • 如果没有则需要手动启动,输入下面的命令:
      sudo cron -f &
    • 后台成功启动后,然后通过ls -l命令查看当前目录的文件,可以看到任务在创建之后便创建了一个当时时间的文件,后续在每分钟的01秒时执行一次我们的任务。
    • 可以通过这样一个命令查看到执行任务命令之后在日志中的信息反馈:
      sudo tail -f /var/log/syslog
    • 当不需要这个任务的时候,可以使用下面的命令去删除任务:
      crontab -r
    • 删除之后再查看任务列表,系统已经显示该用户并没有任务:
      crontab -l

二、crontab的深入

  • 这个crontab -e是针对使用者的cron来设计的,也就是每个用户在添加任务时,就会在/var/spool/cron/crontabs中添加一个该用户自己的任务文档,这样就可以做到隔离、独立,不会混乱。而对于系统的例行性任务,只要编辑/etc/crontab档案就可以了。基本上,cron这个服务的最低侦测限制是分钟,所以cron会每分钟去读取一次/etc/crontab与/var/spool/cron/crontabs里面的资料内容。因此,只要编辑完/etc/crontab这个文档,并且将其存储后,那么cron的设定就自动的执行了。
    • 输入下列命令:
      ll /etc/ | grep cron
    • 可以观察到关于cron的文件:
      /etc/cron.daily,目录下的脚本会每天执行一次,在每天的6点25分时运行
      /etc/cron.hourly,目录下的脚本会每个小时执行一次,在每小时的17分钟时运行
      /etc/cron.mouthly,目录下的脚本会每月执行一次,在每月的1号的6点52分时运行
      /etc/cron.weekly,目录下的脚本会每周执行一次,在每周第七天的6点47分时运行
    • 当然,以上的时间都是系统默认的时间,可以根据自己的需求进行修改,更多信息请用man命令来查看