linux定时任务

linux下可以使用 crontab 创建定时任务

怎么用

如果是最小化安装的ubuntu可能没有该服务,可以使用 sudo apt install cron 进行安装,安装后就可以使用cron或crontab

crontab的使用方式很简单,输入 crontab -e 命令,就会弹出一个vim框,然后你就可以在里面输入 crontab 格式的指令,保存退出即可。

# 每年 6 月 12 号 晚上 23 点 59 秒输出一个bingo
59 23 12 6 * echo "bingo"

注:系统会定时执行后面的命令,且以创建者的身份执行

可以使用 crontab -l 查看创建的定时任务

另一种方式是直接将定时任务添加到 /etc/crontab 文件,cron服务会每分钟读取一次该文件看看是否有需要执行的命令,只不过和上面的格式稍有不同,你需要添加一个执行命令的用户名

# 注意,该命令会以hunt的身份执行,为什么可以指定执行的用户呢?因为修改该文件需要使用root权限
59 23 12 6 * hunt echo "bingo"

语法

几分  几点  几号  几月  周几  执行什么任务

从上面看并没有设置年份,所以你的任务最起码是以年为循环执行的

那如果我要设置两个时间,但它们只有一点不同,例如分别是 3 分钟 和 5 分钟的时候执行,那该怎么办呢?

有两种方法:

  1. 写两个定时任务
  2. 使用 , 分隔符,例如 3,5 * * * * task

那如果我想某个时间段都执行呢,例如每个月的 周2 到 周 5 执行?

同样可以设置多个定时任务,但也可以使用 - 分隔符指定,例如 59 23 * 6 2-5 hunt echo "bingo"

如果我想间隔一段时间就执行呢,例如每5分钟执行一次?

可以使用 / 符号指定,例如 */5 * * * * task

最后需要注意的是,日月 和 周 不能同时指定,例如 59 23 12 6 3 echo "bingo",我同时指定了 6月12号 与周3,直观感觉就像只有当6月12号是周3时才执行,但实际上这样是冲突的

Leave a Comment