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 @ 2020-04-22 09:36  duchaoqun  阅读(124)  评论(0编辑  收藏  举报