Linux - crontab 自动任务

Summary

  • 在CentOS系统上安装:yum install crontabs
  • 系统中的每个用户可以有一个自己的 crontab 文件,他们可以利用该文件来实现不同日期、不同时间的多个事件的调度。
  • crontab 文件的6个字段的含义如下:

    第1列分钟:范围是 0~59
    第2列小时:范围是 0~23
    第3列日期:范围是 1~31
    第4列月份:范围是 1~12
    第5列星期:范围是 0~7(0和7表示星期天),从星期天开始
    第6列要运行的命令

理解

  • 该文件的每一个条目必须含有5个时间域,而且每个域之间要用空格分隔.该文件中所有的注释行要在行首用#来表示.
  • 分钟列必须有数字,否则星号代表每分钟都执行,如果设置了小时任务,分钟列还是星号,那么到目标小时后,每分钟都会执行
  • 可以用横杠-来表示一个时间范围,例如你希望星期一至星期五运行某个作业,那么可以在星期域使用1-5来表示.
  • 在域中使用逗号“,”,例如你希望星期一和星期四运行某个作业,只需要使用1,4来表示.
  • 但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件.系统管理员是通过cron.deny和cron.allow这两个文件来禁止或允许用户拥有自己的crontab文件.
crontab -l # 查看当前用户的定时任务
crontab -e # 编辑当前用户的定时任务
crontab -u # 用户名,当前登录用户不用填写用户名
crontab -r # 删除crontab文件, 慎用!慎用!慎用!慎用!! 注意备份

Demo

# 每分钟执行
* * * * * /opt/task/startup.sh
# 每晚的21:30运行
30 21 * * * /opt/task/startup.sh
# 每月1,10,22日的4:45运行
45 4 1,10,22 * * /opt/task/startup.sh
# 每周六,周日的1:10运行一个find命令,删除一些内容
10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;
# 每天18:00至23:00之间每隔30分钟运行
0,30 18-23 * * * /opt/task/startup.sh
# 每星期六的23:00运行
0 23 * * 6 /opt/task/startup.sh

特别的标签

# 在开机的时候执行一次
@reboot su - mysql -s /bin/bash /opt/mysql-5.7.22/start.sh
@reboot su - mysql -s /bin/bash /opt/mysql-5.7.22/start.sh
# 每小时运行,对应的是 0 * * * *
@hourly /opt/task/startup.sh
# 其他
@yearly 对应 0 0 1 1 * 每年运行一次
@annually 对应 0 0 1 1 * 每年运行一次
@monthly 对应 0 0 1 * * 每月运行一次
@weekly 对应 0 0 * * 0 每周运行一次
@daily 对应 0 0 * * * 每天运行一次
@hourly 对应 0 * * * * 每时运行一次

其他内容

  • at 命令 使她在一个特定的时间执行一个特殊的任务
  • & 使用它在后台运行一个占用时间不长的进程
  • Nohup 使用它在后台运行一个命令,即使在用户退出时也不受影响
posted @   duchaoqun  阅读(125)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示