[关闭]
@Mr-13 2020-11-25T10:32:56.000000Z 字数 1969 阅读 86

crontab的用法与实例

Linux crontab



  在Linux的使用维护中,我们经常需要“定时”执行某些系统动作,比如:定时进行数据备份、定时执行脚本执行远端数据采集等等,这里会用到crontab。


1、crontab配置文件

  Linux下任务调度分为两类:系统任务调度用户任务调度。Linux系统任务调度是由cron(crond)这个系统服务来控制的,这个系统服务是默认启动的。用户自己设置的计划任务则是使用crontab命令。在CentOS系统中,使用 cat /etc/crontab 命令查看解释如下:

  1. $ cat /etc/crontab
  2. // 打印如下:
  3. SHELL=/bin/bash
  4. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  5. MAILTO=root
  6. # HOME=/
  7. # For details see man 4 crontabs
  8. # Example of job definition:
  9. # .---------------- minute (0 - 59)
  10. # | .------------- hour (0 - 23)
  11. # | | .---------- day of month (1 - 31)
  12. # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  13. # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  14. # | | | | |
  15. # * * * * * user-name command to be executed

  前四行用来配置crond任务运行的环境变量:

第一行: Shell 变量指定了系统要使用哪个shell,这里是bash

第二行: PATH 变量制定了系统执行命令的路径

第三行: MAILTO 变量制定了crond任务执行信息将通过电子邮件发送给root用户,如果该变量为空,则表示不发送任务执行信息给用户;

第四行: HOME 变量制定了在执行命令或脚本时使用的主目录;
    我自己在阿里云的Centos7系统上,并没有打印出这一行信息,第四行是空行;可能和系统版本差异有关

  所有用户(root,zabbix,postgres等系统用户)定义的corntab任务,都以文件的形式保存在:/var/spool/cron 目录中,其文件名与用户名一致。


2、crontab文件含义

  用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,他的格式共分为6个字段,前五个字段是时间设定字段,最后一个字段是要执行的命令,格式如下:

  以上各个字段中,还可以使用以下特殊字符:

* :代表所有取值范围内的数字,例如:月份字段为 *,表示1~12月;
/ :代表“每一定时间间隔”的意思,例如:分钟字段为 */10,表示每10分钟执行一次;
- :代表从某个区间范围,是闭区间。例如:小时字段中 0-23/2 表示在0~23点内每隔2小时执行一次。
, :分散的数字(不一定连续),例如:1,2,3,4,7,9

注: 星期字段中,07 都表示星期天Sunday

.  


3、crontab命令详解

  命令格式:

  1. crontab [-u user] file
  2. crontab [-u user] [-i] {-e | -l | -r}
  3. # -u user : 用于设定某个用户的crontab服务;即:在那个用户下执行该命令;
  4. # file :file为命令文件名,表示将file作为crontab的任务列表文件,并载入crontab中;
  5. # -e :编辑某个用的crontab文件内容,如果不指定用户则表示当前用户
  6. # -l :显示某个用户的crontab文件内容,如果不指定用户则表示当前用户
  7. # -r :从/var/spool/cron目录中删除某个用户的crontab文件
  8. # -i :在删除用户的crontab文件时给确认提示


4、注意要点

  • crontab有两种编辑方式:直接编辑/etc/crontab文件crontab -e 命令,其中/etc/crontab 文件里的嘉护任务是系统中的计划任务,而用户的计划任务需要通过 crontab -e 命令来完成。

  • 每次编辑完某个用户的cron设置后,cron自动在 /var/spool/cron 下生成一个与此用户名同名的文件,该用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只能通过crontab -e 命令来编辑。

  • crontab中的command尽量使用绝对路径,否则容易引起因为路径错误导致任务无法执行

  • 新创建的任务不会马上执行,至少要等2分钟才能执行,可重启cron来立即执行

  • 在crontab文件中 % 表示换行,因此假如脚本或者命令中含有%符号,需要使用 \% 来进行转义

  • /etc/cron.deny 该文件中所列用户不允许使用crontab命令
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注