分类: Linux

Linux crontab配置文件

cron程序是 Linux 下计划任务,就是在约定的时间执行已经计划好的工作。我们可以把 crond 设置为开机时自动启动,crond 启动后,它会读取配置文件(全局性配置文件/etc/crontab,以及用户的配置文件),然后 crond 会根据命令和执行时间来按时来调用度工作任务。crond 程序默认开机启动,如果没有启动,可以运行 【/etc/init.d/cron start】 命令手动运行。 cron 还有一个配置工具 crontab 命令,用来读取和编辑计划任务的。

Linux cron 配置文件

用户控制
文 件 描 述
/etc/cron.allow 允许用户执行 crontab 命令。
/etc/cron.deny 禁止用户执行 crontab 命令。
以上两个文件是根用户用来控制谁拥有 crontab 命令的使用权限,两个文件默认不存在,需要自行建立。它的文件格式是每行一个用户名,且修改这两个文件不必重启 cron 的守护进程,因为用户每次使用 crontab 时都会读取这两个文件,确认是否有权限。如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 crontab,并且 cron.deny 文件会被忽略; 如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 crontab;如果这两个文件都不存在,则所有用户都拥用 crontab 命令的使用权限。

任务分配

文 件 描 述
/etc/crontab 全局配置文件。
/etc/cron.d/
/var/spool/cron/crontabs/ 用户配置文件存储目录。
以上 cron 的全局配置文件,其中 /etc/cron.d/ 是目录,所有在此目录的文件都会被 crond 读取,它们的文件格式和 /etc/crontab 一样,如果把此目录的文件内容全部添加到 /etc/crontab 中,取等同效果,而且此处的任务,用户无法使用 crontab -l 列出来。

用户通过 crontab 添加的任务,以用户名命名的文件存储在 /var/spool/cron/crontabs/ 目录中,也可由 root 用户直接编写,其它用户是无法直接读写此目录的,仅能使用 crontab 查看编辑。无论用户是否拥有 crontab 命令的使用权限,只要此目录中存在对应的文件,都会在此用户登陆后被 crond 读取,并在设定的时间执时相应的任务。

 cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

00 0,6,12,18 * * * /usr/sbin/ntpdate 133.100.11.8;/sbin/clock --systohc
#nginx logs rotate daily
00 00 * * *  nginx /bin/sh /bin/log_nginx_rotate.sh

cron 在一个区域里填写多个数值的方法,即操作符号:

操 作 符 描 述
, 分开的值,例: 1,3,4,7,8。

  • 连接的值,例:1-8,等同如上。
  • 任何值。
    /n 被n整除的数,也可以这样写:0-59/5、10-20/5、50-59/2。

实例讲解

30 8 * * 5-6 root /sbin/reboot
#每周五和周六的08点30分重启系统。
50-59/3 * * * * root /root/CheckIP.sh
#每小时的50-59分钟段每隔3分钟执行一次 CheckIP.sh 脚本,
59 23 1 5 * root mail mm < /home/itwhy/love.txt
#每年5月1日的23:59 发一份Email。
59 */2 * * * /bin/echo `date +"\%T"`
#每两个小时的59分钟报一次时间,注意配置文件中的 “%” 需要反斜杠 “/” 转义,不然会出错。

Linux crontab 命令

crontab 语法
前面以经讲解了一些关于 crontab 命令的内容,这里就不重复了,只讲解crontab的使用方法:
crontab [ -u user ] file 或 crontab [ -u user ] [ -i ] { -e | -l | -r }

选 项 描 述
<无参数> 默认是从标准输入,【Ctrl+D】保存退出<会清空原先内容>,【Ctrl+c】不保存退出。
-u user 指定操作的用户<需要 root 用户权限>。
file 从指定的文件中读取,并写入/var/spool/cron/crontabs/%USER 文件
-e 编辑 /var/spool/cron/crontabs/%USER 文件
-l 读取 /var/spool/cron/crontabs/%USER 文件
-r 删除 /var/spool/cron/crontabs/%USER 文件
-i 与 -r 选项组合,提示用户是否删除。

相关文章

发表新评论