crontab 编写规则

crontab的语法规则格式:

代表意义    分钟    小时    日期    月份    周    命令
数字范围    0~59    0~23    1~31    1~12    0~7    需要执行的命令
周的数字为 0 或 7 时,都代表“星期天”的意思。

另外,还有一些辅助的字符,大概有下面这些:

特殊字符    代表意义
*(星号)    代表任何时刻都接受的意思。举例来说,0 12 * * * command 日、月、周都是*,就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思。
,(逗号)    代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是:0 3,6 * * * command时间还是有五列,不过第二列是 3,6 ,代表3与6都适用
-(减号)    代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作:20 8-12 * * * command仔细看到第二列变成8-12.代表 8,9,10,11,12 都适用的意思
/n(斜线)    那个n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则:*/5 * * * * command用*与/5来搭配,也可以写成0-59/5,意思相同


1.每分钟定时执行一次规则:
每1分钟执行: */1 * * * *或者* * * * *
每5分钟执行: */5 * * * *

2.每小时定时执行一次规则:
每小时执行: 0 * * * *或者0 */1 * * *
每天上午7点执行:0 7 * * *
每天上午7点10分执行:10 7 * * *

3.每天定时执行一次规则:
每天执行 0 0 * * *

4.每周定时执行一次规则:
每周执行 0 0 * * 0

5.每月定时执行一次规则:
每月执行 0 0 1 * *

6.每年定时执行一次规则:
每年执行 0 0 1 1 *

7.其他例子
5 * * * * 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]
--------------------- 
版权声明:本文为优快云博主「PeakXin」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/xinyflove/article/details/83178876

编写 `crontab` 定时任务是一种在类 Unix 系统(如 Linux 和 macOS)上设置周期性工作的常用方法。通过 Crontab 文件可以安排命令或脚本自动运行而无需人工干预。 ### 创建和编辑 crontab 每个用户都有自己独立的 crontab 文件,默认存储位置通常为 `/var/spool/cron/username` 或类似路径下,不过直接修改文件内容并不是推荐的做法;而是应该使用系统提供的 `crontab -e` 命令来创建、编辑以及删除定时任务条目: ```bash crontab -e # 编辑当前用户的crontab配置 ``` 这将打开默认文本编辑器,在其中添加新的行以定义计划任务。 ### 设置表达式格式 一条完整的 cron 表达由五个时间字段加上要执行的操作构成,各部分之间用空格分隔开。格式如下所示: ``` * * * * * command_to_execute | | | | | | | | | +----- 星期几 (0-7) (星期天=0 or 7) | | | +------- 每月第几天(1-31) | | +--------- 月份 (1-12) | +----------- 小时 (0-23) +------------- 分钟 (0-59) command_to_execute // 需要执行的具体命令或者脚本路径 ``` 例如,如果希望每天凌晨两点整备份数据库,则可以在 crontab 中加入这样的记录: ``` 0 2 * * * /path/to/mysqlbackup.sh ``` 表示的是 "当时间为每个小时的第 0 分,并且此时是当天的第 2 小时时" 执行该指定操作。 另外还有些特殊的字符可以用来自定义规则- `-`: 连续范围的意思; - `,`: 列举多个值。 #### 示例解析: 1. **每周一到周五上午8点** 发送提醒邮件给团队成员: ``` 0 8 * * 1-5 echo 'Good morning team!' | mailx -s "Daily Reminder" group@company.com ``` 2. **每月第一天午夜重启某个服务程序** ``` 0 0 1 * * systemctl restart myservice ``` 3. **每十分钟保存日志信息至特定目录下的文件中** ``` */10 * * * * logger -p local6.info $(date "+%Y-%m-%d %H:%M:%S") >> /var/log/myapp.log ``` 一旦完成了所有必要的设定之后,请记得保存并退出编辑器。随后可通过以下指令查看已有的 crontab 条目列表: ```bash crontab -l ``` 如果您想移除现有的某一项或者是全部的任务项的话,同样也有相应的命令可用: ```bash # 删除单个任务 crontab -r [file] # 此处 [file] 是指包含您想要删除的那一行的临时文件名 # 清除所有的任务 crontab -r # 直接清除整个 crontab 内容 ``` 最后要注意的一点就是环境变量的问题。由于 cron 工作是在一个非常精简的 shell 下面运作的,因此它不会继承您的 Bash Profile 变量等东西。所以最好在命令前显式地声明所需的 PATH 或其他重要的环境变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值