cron和crontab命令详解 crontab 每分钟、每小时、每天、每周、每月、每年定时执行 crontab每5分钟执行一次

理解Cron机制与crontab指令
本文详细介绍了Cron机制如何实现定时任务执行,包括crontab指令的使用方法,如-u、-l、-r、-e、-i参数的功能;解释了crontab时间格式的规则及范例;讨论了Cron机制的权限控制以及Crontab文件的配置。文章还涉及了Cron的权限文件(/etc/cron.allow和/etc/cron.deny)的用途,并展示了Cron机制中用于存放定时任务脚本的目录结构。
cron机制
        cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制

crontab参数
        -u:这个参数可以让我们去编辑其他人的crontab,如果没有加上这个参数的话就会开启自己的crontab
        crontab -u 使用者名称

        -l:可以列出crontab的内容

        -r:可以移除crontab

        -e:可以使用系统预设的编辑器,开启crontab

        -i:可以移除crontab,会跳出系统信息让你再次确定是否移除crontab

crontab时间格式说明
        minute(分)可以设置0-59分

        hour(小时)可以设置0-23小时

        day of month(日期)可以设置1-31号

        month(月份):可以设置1-12月

        day of week(星期):可以设置0-7星期几,其中0和7都代表星期天,或者我们也可以使用名称来表示星期天到星期一,例如sun表示星期天,mon表示星期一等等

crontab时间格式范例
    1-3表示123
    1-9/2表示13579

crontab范例
    每五分钟执行  */5 * * * *

    每小时执行     0 * * * *

    每天执行        0 0 * * *

    每周执行       0 0 * * 0

    每月执行        0 0 1 * *

    每年执行       0 0 1 1 *

设定cron的权限
        /etc/cron.allow
        /etc/cron.deny

        系统首先判断是否有cron.allow这个文件,如果有这个文件的话,系统会判断这个使用者有没有在cron.allow的名单里面,如果在名单里面的话,就可以使用cron机制。如果这个使用者没有在cron.allow名单里面的话,就不能使用cron机制。

         如果系统里面没有cron.allow这个文件的话,系统会再判断是否有cron.deny这个文件,如果有cron.deny这个文件的话,就会判断这个使用者有没有在cron.deny这个名单里面,如果这个使用者在cron.deny名单里面的话,将不能使用cron机制。如果这个使用者没有在cron.deny这个名单里面的话就可以使用cron机制。

        如果系统里这两个文件都没有的话,就可以使用cron机制

介绍crontab文件
        /etc/crontab
        在这个文件里并没有记录系统要执行哪些工作,而是记录了下面四个子目录。
        /etc/cron.hourly
        /etc/cron.daily
        /etc/cron.weekly
        /etc/cron.monthly
        这些子目录里存放了一些脚本,到了crontab所指定的时间点,系统就会去执行这些子目录里的脚本。
### Crontab 时间周期任务设置 Crontab 是 Linux Unix 系统中的一个工具,用于定期运行指定的任务。以下是针对每分钟、每小时每天每周每月以及每季度的时间周期任务的语法示例。 #### 每分钟执行任务 如果希望某个任务每分钟执行一次,则可以使用以下语法: ```bash * * * * * command_to_execute ``` 这表示每一分钟都会触发 `command_to_execute` 的执行[^1]。 **示例:** ```bash * * * * * echo "This is executed every minute" ``` --- #### 每小时执行任务 为了使某项任务每小时执行一次,可以在分位上固定具体数值(通常为 0),其他位置设为通配符 `*`: ```bash 0 * * * * command_to_execute ``` 这意味着在每个小时的第一分钟执行命令[^1]。 **示例:** ```bash 0 * * * * echo "This runs once per hour at the start of each hour" ``` --- #### 每天执行任务 对于每日定时任务,在时位分位分别设定固定的值即可完成操作;其余字段均填入星号代表任意日期或月份均可生效。 ```bash 0 0 * * * command_to_execute ``` 此表达式表明每天凌晨零点整将自动启动所定义好的程序或者脚本文件。 **示例:** ```bash 0 0 * * * echo "Daily task running at midnight" ``` --- #### 每周执行任务 当需要安排一周内的特定一天来处理某些事情时,可以通过星期几参数来进行配置 (范围是从 0 到 7 ,其中两者皆指代 Sunday ) : ```bash 0 0 * * 0 command_to_execute # 或者也可以成 '7' ``` 上述例子意味着每个星期日午夜时候将会调用相应的动作去实施预定的工作流程[^1]。 **示例:** ```bash 0 0 * * 0 echo "Weekly backup starts on Sundays" ``` --- #### 每月执行任务 若想让一项活动仅限于一个月里的特殊日子发生的话 , 只需把对应的日子填到第四列的位置上去就可以了: ```bash 0 0 1 * * command_to_execute ``` 这里的意思是在每个月的一号早上八点钟准时开启新的进程实例。 **示例:** ```bash 0 0 1 * * echo "Monthly report generation begins on first day of month" ``` --- #### 每季度执行任务 最后考虑按季循环的情况 . 假定我们期望每隔三个月重复做同一件事情三次(即一年四季里各有一次机会), 那么只需要简单修改一下第五栏的内容成为 "/3": ```bash 0 0 1 */3 * command_to_execute ``` 这样就实现了按照自然年度划分出来的四个阶段内轮流激活目标功能的效果[^4]. **示例:** ```bash 0 0 1 */3 * echo "Quarterly financial review conducted quarterly" ``` --- ### 特殊标签支持 除此之外,Cron还提供了几个特殊的字符串代替标准五段式的描述方法以便简化常用场景下的编工作量, 如下所示[@reboot,@yearly,@annually,@monthly,@weekly,@daily,@midnight,@hourly]: | 标签 | 描述 | |------------|--------------------------| | @reboot | 开机自启 | | @yearly/@annually | 每年执行一次 | | @monthly | 每个月执行一次 | | @weekly | 每周执行一次 | | @daily/@midnight | 每天执行一次 | | @hourly | 每小时执行一次 | 这些快捷方式可以直接替换传统的五个时间字段组合形式从而达到更加直观易懂的目的[^2]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值