crontab 的格式备忘

本文详细介绍了Linux系统中Cron定时任务的配置方法与常见应用案例,包括基本格式、复杂调度方式及其具体应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经常用,但是经常忘记,基本的格式能记得,但是详细的或者复杂点的格式总会忘记或者拿不准,不知道是不是年纪大了记忆力下降,干脆整理出来今后方便查看。

基本格式 :
*  *  *  *  *  command
分 时 日 月 周 命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启lighttpd 。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启lighttpd 。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启lighttpd 。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启lighttpd 。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启lighttpd 。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启lighttpd

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启lighttpd

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启lighttpd

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启lighttpd

 

 

 

1. 如何配置脚本每隔1分钟运行一次?
   #调用crontab -e 编辑,编辑内容为:
   0-59 * * * * /home/scada/test
#  */2 * * * *  /home/scada/text
2. 如何配置脚本每隔5分钟执行一次?
   #调用crontab -e 编辑,编辑内容为:
   0-59/5 * * * * /home/scada/test
3. 配置为: 0,1 * * * * /home/scada/test是什么意思?
   它表示每小时运行两次(整点及整点后两分钟)

 

Linux cron 配置样例

1.cron 是一个可以用来根据时间、日期、月份、星期的组合来调度对重复任务的执行的守护进程。
cron 假定系统持续运行。如果当某任务被调度时系统不在运行,该任务就不会被执行。
要使用 cron 服务,你必须安装了 vixie-cron RPM 软件包,而且必须在运行 crond 服务。要判定该软件包是否已安装,使用 rpm -q vixie-cron 命令。要判定该服务是否在运行,使用 /sbin/service crond status 命令。

1.1. 配置 cron 任务
cron 的主配置文件是 /etc/crontab,它包括下面几行:
SHELL=/bin/bash
            PATH=/sbin:/bin:/usr/sbin:/usr/bin
            MAILTO=root
            HOME=/
            # run-parts
            01 * * * * root run-parts /etc/cron.hourly
            02 4 * * * root run-parts /etc/cron.daily
            22 4 * * 0 root run-parts /etc/cron.weekly
            42 4 1 * * root run-parts /etc/cron.monthly
前四行是用来配置 cron 任务运行环境的变量。SHELL 变量的值告诉系统要使用哪个 shell 环境(在这个例子里是 bash shell);PATH 变量定义用来执行命令的路径。cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。如果 MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出。HOME 变量可以用来设置在执行命令或脚本时使用的主目录。
/etc/crontab 文件中的每一行都代表一项任务,它的格式是:
minute   hour   day   month   dayofweek   command

•        minute — 分钟,从 0 到 59 之间的任何整数
•        hour — 小时,从 0 到 23 之间的任何整数
•        day — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)
•        month — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)
•        dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)
•        command — 要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)
在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。
用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。
正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。
开头为井号(#)的行是注释,不会被处理。

如你在 /etc/crontab 文件中所见,它使用 run-parts 脚本来执行 /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目录中的脚本,这些脚本被相应地每小时、每日、每周、或每月执行。这些目录中的文件应该是 shell 脚本。
如果某 cron 任务需要根据调度来执行,而不是每小时、每日、每周、或每月地执行,它可以被添加到 /etc/cron.d 目录中。该目录中的所有文件使用和 /etc/crontab 中一样的语法。
# record the memory usage of the system every monday
            # at 3:30AM in the file /tmp/meminfo
            30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
            # run custom script the first day of every month at 4:10AM
            10 4 1 * * /root/scripts/backup.sh
例 1. crontab 的例子
根用户以外的用户可以使用 crontab 工具来配置 cron 任务。所有用户定义的 crontab 都被保存在 /var/spool/cron 目录中,并使用创建它们的用户身份来执行。要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令,使用由 VISUAL 或 EDITOR 环境变量指定的编辑器来编辑该用户的 crontab。该文件使用的格式和 /etc/crontab 相同。当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名被保存,并写入文件 /var/spool/cron/username 中。
cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron 目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个 crontab 文件改变后就不必重新启动守护进程了。

1.2. 控制对 cron 的使用
/etc/cron.allow 和 /etc/cron.deny 文件被用来限制对 cron 的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。
无论使用控制文件中的规定如何,根用户都总是可以使用 cron。
如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。
如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron。

1.3. 启动和停止服务
要启动 cron 服务,使用 /sbin/service crond start 命令。要停止该服务,使用 /sbin/service crond stop 命令。推荐你在引导时启动该服务。

### crontab 文件格式及字段说明 #### 基本结构 `crontab` 的基本格式由六个字段组成,用于定义任务的执行时间和具体操作。对于 `/etc/crontab` 和其他系统级 `cron` 配置文件,还有一个额外的字段用来指定运行该任务的用户。 #### 字段顺序 以下是标准 `crontab` 文件中的字段及其含义: | 字段位置 | 描述 | 可接受范围 | |----------|-------------------------|--------------------| | 1 | 分钟 (minute) | 0-59 | | 2 | 小时 (hour) | 0-23 | | 3 | 日 (day of the month) | 1-31 | | 4 | 月 (month) | 1-12 或 JAN-DEC | | 5 | 星期几 (day of the week)| 0-7 (其中0和7都表示周日),或者 SUN-SAT | | 6 | 要执行的任务 | | 如果使用的是 `/etc/crontab` 文件,则会有一个附加字段位于第 6 位之前,即 **用户(user)** 字段[^1]。 #### 特殊字符解释 除了具体的数值外,在这些字段中还可以使用一些特殊字符来简化表达方式: - **星号(*)**: 表示任意值。例如,“*”在小时字段意味着“每个小时”。 - **逗号(,)**: 用于分隔多个离散值。比如 “MON,WED,FRI” 表明周一、周三和周五。 - **连字号(-)**: 定义一个连续区间。如 “8-11” 对应于上午八点到十一点之间。 - **斜杠(/)**: 设定步长频率。例如 "/15" 在分钟栏代表每隔十五分钟触发一次[^4]。 #### 示例代码展示 下面给出几个实际应用的例子以帮助理解上述规则的应用场景。 ```bash # 每天凌晨两点清理临时目录下的所有文件 0 2 * * * rm -rf /tmp/* # 每周六晚上九点半提醒备份数据库 30 21 * * SAT echo "Please backup your database" ``` 对于系统级别的配置可以这样写入 `/etc/crontab` 中: ```bash # root 用户每天早上四点钟更新软件包索引 0 4 * * * root apt-get update ``` #### 运行状态与日志管理 可以通过以下命令检查 `cron` 服务的状态以及查看其产生的日志记录以便调试可能存在的问题[^2]: ```bash service cron status tail -f /var/log/syslog | grep CRON ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值