前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux crontab命令:循环执行定时任务

Linux crontab命令:循环执行定时任务

原创
作者头像
织幻妖
修改2021-04-26 14:41:34
4K0
修改2021-04-26 14:41:34
举报
文章被收录于专栏:用户7552167的专栏

为保障平台的稳定性,平台每天早上都需要巡检,并发送邮件

发送的邮件基本是大同小异,所以就写了一个脚本发送,因为每天都要发送,就用crontab 写了一个循环的定时任务

crontab 命令的基本格式如下:

代码语言:javascript
复制
[root@localhost ~]# crontab [选项] [file]

注意,这里的 file 指的是命令文件的名字,表示将 file 作为 crontab 的任务列表文件并载入 crontab,若在命令行中未指定文件名,则此命令将接受标准输入(键盘)上键入的命令,并将它们键入 crontab。

crontab 命令常用选项及功能

选项

功能

-u user

用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo用户的 crontab 服务,此选项一般有 root 用户来运行。

-e

编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。

-l

显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。

-r

从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。

-i

在删除用户的 crontab 文件时,给确认提示。

其实 crontab 定时任务非常简单,只需执行“crontab -e”命令,然后输入想要定时执行的任务即可。不过,当我们执行“crontab -e”命令时,打开的是一个空文件,而且操作方法和 Vim 是一致的。那么,这个文件的格式才是我们真正需要学习的内容。文件格式如下:

[root@localhost !]# crontab -e #进入 crontab 编辑界面。会打开Vim编辑你的任务 * * * * * 执行的任务

项目

含义

范围

第一个"*"

一小时当中的第几分钟(minute)

0~59

第二个"*"

一天当中的第几小时(hour)

0~23

第三个"*"

一个月当中的第几天(day)

1~31

第四个"*"

一年当中的第几个月(month)

1~12

第五个"*"

一周当中的星期几(week)

0~7(0和7都代表星期日)

时间特殊符号

特殊符号

含义

*(星号)

代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。

,(逗号)

代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。

-(中杠)

代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。

/(正斜线)

代表每隔多久执行一次。比如"*/10****命令",代表每隔 10 分钟就执行一次命令。

crontab举例

时间

含义

45 22 ***命令

在 22 点 45 分执行命令

0 17 ** 1命令

在每周一的 17 点 0 分执行命令

0 5 1,15**命令

在每月 1 日和 15 日的凌晨 5 点 0 分执行命令

40 4 ** 1-5命令

在每周一到周五的凌晨 4 点 40 分执行命令

*/10 4 ***命令

在每天的凌晨 4 点,每隔 10 分钟执行一次命令

0 0 1,15 * 1命令

在每月 1 日和 15 日,每周一个 0 点 0 分都会执行命令,注意:星期几和几日最好不要同时出现,因为它们定义的都是天,非常容易让管理员混淆

【例 1】让系统每隔 5 分钟就向 /tmp/test 文件中写入一行“11”,验证一下系统定时任务是否会执行。

[root@localhost ~]# crontab -e #进入编辑界面 */5 * * * * /bin/echo "11" >> /tmp/test

【例 2】让系统在每周二的凌晨 5 点 05 分重启一次。

[root@localhost ~]# crontab -e 5.5 * * 2 /sbin/shutdown -r now

【例 3】在每月 1 日、10 日、15 日的凌晨 3 点 30 分都定时执行日志备份脚本 autobak.sh。

[root@localhost ~]# crontab -e 30.3 1,10,15 * * /root/sh/autobak.sh

在书写 crontab 定时任务时,需要注意以下几个事项:

  • 6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
  • crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
  • 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
  • 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档