定时任务crontab

Posted sswind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定时任务crontab相关的知识,希望对你有一定的参考价值。

1. crontab循环执行定时任务

1.1 crond服务管理与控制访问

  crontab命令是需要crond服务支持的,crond服务同样是独立的服务。 crond服务默认是自启动的。

[root@centos2 ~]# systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2019-11-13 16:24:18 CST; 2h 24min ago
 Main PID: 1267 (crond)
    Tasks: 1
   CGroup: /system.slice/crond.service
           └─1267 /usr/sbin/crond -n

11月 13 16:24:18 centos2 systemd[1]: Started Command Scheduler.
11月 13 16:24:19 centos2 crond[1267]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 17% if used.)
11月 13 16:24:19 centos2 crond[1267]: (CRON) INFO (running with inotify support)

  crontab命令和at命令类似,也是通过/etc/cron.allow和/etc/cron.deny文件来限制某些用户是否可以使用crontab命令的,原则也非常相似

    当系统中有/etc/cron.allow文件时,只有希尔此文件的用户可以使用crontab命令,没有写入的用户不能使用crontab命令。同样如果有此文件,/etc/cron.deny文件会被忽略,/etc/cron.allow文件的优先级更高

    当系统中只有/etc/cron.deny文件时,则写入此文件的用户不能使用crontab命令,没有写入文件的用户可以使用crontab命令

  这个规则基本和at的规则一直,同样/etc/cron.allow文件的优先级比/etc/cron.deny文件的优先级高,Linux中默认只有/etc/cron.deny文件。

1.2 用户的crontab设置

  每个用户都可以实现自己的crontab定时任务,只要是使用这个用户身份执行“crontab -e”命令即可,当然这个用户不能加入/etc/cron.deny文件中

[root@centos2 ~]# crontab [选项]
选项:
    -e:编辑crontab定时任务
    -l:查询crontab任务
    -r:删除当前用户所有的crontab任务,如果有多个任务,只想删除一个,可以使用“crontab -e”
    -u 用户名:修改或删除其他用户的crontab任务。只有root使用
[root@centos2 ~]# crontab -e
#crontab编辑界面。会打开vim编辑
* * * * * 执行的任务
项目 含义 范围
第一个“*” 几分 0-59
第二个“*” 几点 0-23
第三个“*” 一个月第几天 1-31
第四个“*” 几月 1-12
第五个“*” 星期几 0-7(0和7都代表星期日)

 

 

 

 

 

 

在时间表示时,还有一些特殊符号

特殊符号 含义
* 代表任何时间。比如第一个“*”就表示一小时中每分钟都执行一次的意思
, 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在周一至周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令

 

 

 

 

 

 

 

时间 含义
10 2 * * * 命令 每天凌晨2点10分执行命令
10 2 * * 7 命令 每周日凌晨2点10分执行命令
10 2 1,15 * * 命令 每月1号15号的凌晨2点10分执行命令
10 2 * * 1-6 命令 每周一至周六的凌晨2点10分执行命令
*/10 2 * * * 命令 每天凌晨2点,每隔10分钟执行一次命令
10 2 1,15 * 1 命令 每月1号15号,每周一的2点10分执行命令。注意:最好星期几和几号不要同时出现,因为定义的都是天。容易混乱

 

 

 

 

 

 

 

 

 

 

以上是关于定时任务crontab的主要内容,如果未能解决你的问题,请参考以下文章

linux crontab定时任务调用CI框架PHP代码

linux crontab定时任务调用CI框架PHP代码

在dotnet core实现类似crontab的定时任务

定时任务crontab

crontab 定时任务

Ubuntu 使用crontab定时任务