crontab使用案例

什么是crontab

crontab是linux操作系统下系统级别的定时完成任务计划的工具,类型于windows的计划任务,不过它只是命令行的。从crontab延展,java等其他语言,也大量使用了crontab的语法进行按时完成任务。


crontab 文件格式


每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下

每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute   hour   day   month   week   command
# 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  表示星期(0 或 7 表示星期天)
|  |  |  |  |  .------------------- username  以哪个用户来执行 
|  |  |  |  |  |            .------ command  要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
|  |  |  |  |  |            |
*  *  *  *  * user-name  command to be executed

格式示例
 

*/1 * * * * service httpd restart    每一分钟 重启httpd服务
0 */1 * * * service httpd restart    每一小时 重启httpd服务
30 21 * * * service httpd restart    每天 21:30 分 重启httpd服务
26 4 1,5,23,28 * * service httpd restart    每月的1号,5号 23 号 28 号 的4点26分,重启httpd服务
26 4 1-21 * * service httpd restart    每月的1号到21号 的4点26分,重启httpd服务
*/2 * * * * service httpd restart    每隔两分钟 执行,偶数分钟 重启httpd服务
1-59/2 * * * * service httpd restart    每隔两分钟 执行,奇数 重启httpd服务
0 23-7/1 * * * service httpd restart    每天的晚上11点到早上7点 每隔一个小时 重启httpd服务
0,30 18-23 * * * service httpd restart    每天18点到23点 每隔30分钟 重启httpd服务
0-59/30 18-23 * * * service httpd restart    每天18点到23点 每隔30分钟 重启httpd服务
59 1 1-7 4 * test 'date +\%w' -eq 0 && /root/a.sh    四月的第一个星期日 01:59 分运行脚本 /root/a.sh ,命令中的 test是判断,%w是数字的星期几

注意点


*表示任何时候都匹配
"a,b,c" 表示a 或者 b 或者c 执行命令
"a-b" 表示a到b 之间 执行命令
"*/a" 表示每 a分钟(小时等) 执行一次
crontab 不能编辑系统级的 任务,不能读取用户环境变量
其他需求 : crontab 最小执行时间是分钟,如果是需要 半分钟执行,如果实现呢?,看如下:
每30秒 把时间写入 /tmp/cron.txt 文件

*/1 * * * * data >> /tmp/cron.txt
*/1 * * * * sleep 30s;data >> /tmp/cron.txt



三、crontab 的配置文件
文件    说明
/etc/crontab    全局配置文件
/etc/cron.d    这个目录用来存放任何要执行的crontab文件或脚本
/etc/cron.deny    该文件中所列用户不允许使用crontab命令
/etc/cron.allow    该文件中所列用户允许使用crontab命令
/var/spool/cron/    所有用户crontab文件存放的目录,以用户名命名,比如你是root 用户,那么当你添加任务是,就会在该路径下有一个root文件。
/etc/cron.deny    该文件中所列用户不允许使用crontab命令
/var/log/cron    crontab 的日志文件
 

### 命令格式 `crontab` 命令格式如下: ```plaintext crontab [-u user] file crontab [-u user] [-l | -r | -e] [-i] [-s] crontab -n [hostname] crontab -c ``` ### 常用选项功能 - `-u user`:用来设定某个用户的 `crontab` 服务,一般由 `root` 用户运行,例如,`-u ixdba` 表示设定 `ixdba` 用户的 `crontab` 服务[^1]。 - `file`:是命令文件的名字,表示将 `file` 作为 `crontab` 的任务列表文件并载入 `crontab`。若在命令行中未指定该文件,`crontab` 命令将接受标准输入(键盘)上键入的命令,并将它们载入 `crontab` [^1]。 - `-l`:显示某个用户的 `crontab` 文件内容,若不指定用户,则显示当前用户的 `crontab` 文件内容 [^1]。 - `-r`:从 `/var/spool/cron/` 目录中删除某个用户的 `crontab` 文件,若不指定用户,则默认删除当前用户的 `crontab` 文件 [^1]。 - `-e`:编辑某个用户的 `crontab` 文件内容,若不指定用户,则表示编辑当前用户的 `crontab` 文件 [^1]。 - `-i`:在删除用户的 `crontab` 文件时给出确认提示。 - `-s`:添加 SELinux 安全上下文(用于 MLS 模式)。 - `-n [hostname]`:设置集群中运行任务的主机。 - `-c`:查询当前运行任务的主机。 ### crontab 文件格式及含义 `crontab` 文件每行代表一个定时任务,格式为: ```plaintext * * * * * command ``` 前五个 `*` 分别代表分钟(0 - 59)、小时(0 - 23)、日期(1 - 31)、月份(1 - 12)、星期(0 - 7,0 和 7 都代表周日),`command` 是要执行的命令。每个时间字段可以使用以下特殊字符: - `*`:表示任意值,例如 `* * * * *` 表示每分钟执行一次。 - `,`:用于分隔多个值,例如 `10,20,30 * * * *` 表示每小时的 10 分、20 分、30 分执行。 - `-`:表示范围,例如 `10-20 * * * *` 表示每小时的 10 分到 20 分每分钟执行。 - `/`:表示间隔,例如 `*/5 * * * *` 表示每 5 分钟执行一次。 ### 使用实例 #### 实例 1:每分钟执行一次命令 ```plaintext * * * * * echo "This is a test" >> /tmp/test.log ``` 此任务表示每分钟执行一次 `echo` 命令,并将输出追加到 `/tmp/test.log` 文件中。 #### 实例 2:每天凌晨 2 点执行备份脚本 ```plaintext 0 2 * * * /home/user/backup.sh ``` 该任务会在每天凌晨 2 点执行 `/home/user/backup.sh` 脚本。 #### 实例 3:每周一、三、五的 10 点 30 分执行任务 ```plaintext 30 10 * * 1,3,5 /usr/bin/python /home/user/script.py ``` 此任务会在每周一、三、五的 10 点 30 分执行 `/home/user/script.py` 这个 Python 脚本。 #### 实例 4:每月 1 号和 15 号的 14 点执行任务 ```plaintext 0 14 1,15 * * /usr/local/bin/task ``` 该任务会在每月 1 号和 15 号的 14 点执行 `/usr/local/bin/task` 程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老骥又出发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值