crontab

Posted duchaoqun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了crontab相关的知识,希望对你有一定的参考价值。

可以在每天的非高峰时间运行,减少系统负载

常用命令

 
1
crontab -l # 查看当前用户的定时任务
2
crontab -e # 编辑当前用户的定时任务
3
crontab -u # 用户名,当前登录用户不用填写用户名
4
crontab -r # 删除crontab文件, 慎用!慎用!慎用!慎用!! 注意备份

内容格式

第1列分钟00-59
第2列小时00-23(0表示子夜)
第3列日1-31
第4列月1-12
第5列星期0-7(0和7表示星期天)
第6列要运行的命令

补充: 还有一种格式为 [秒 分 时 日 月 周 年]
x
 
1
# 每晚的21:30运行/apps/bin目录下的cleanup.sh
2
30 21 * * * /apps/bin/cleanup.sh
3
4
# 每月1,10,22日的4:45运行/apps/bin目录下的backup.sh
5
45 4 1,10,22 * * /apps/bin/backup.sh
6
7
# 每周六,周日的1:10运行一个find命令,删除一些内容
8
10 1 * * 6,0 /bin/find -name "core" -exec rm {} ;
9
10
# 每天18:00至23:00之间每隔30分钟运行/apps/bin目录下的dbcheck.sh
11
0,30 18-23 * * * /apps/bin/dbcheck.sh
12
13
# 每星期六的11:00pm运行/apps/bin目录下的qtrend.sh
14
0 23 * * 6 /apps/bin/qtrend.sh

理解要点

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

特别的标签


在开机的时候执行一次
crontab -e 修改自动任务
@reboot su - mysql -s /bin/bash /opt/mysql-5.7.22/start.sh

crontab -e 修改自动任务
@reboot su - mysql -s /bin/bash /opt/mysql-5.7.22/start.sh

@hourly /usr/local/www/awstats/cgi-bin/awstats.sh
使用 @hourly 对应的是 0 * * * *, 还有下述可以使用:

@yearly 0 0 1 1 * 每年运行一次
@annually 0 0 1 1 * 每年运行一次

@monthly 0 0 1 * * 每个月运行一次

@weekly 0 0 * * 0 每周运行一次

@daily 0 0 * * * 每天运行一次
@midnight

@hourly 0 * * * * 每小时运行一次

其他内容


at 命令 使她在一个特定的时间执行一个特殊的任务
& 使用它在后台运行一个占用时间不长的进程
Nohup 使用它在后台运行一个命令,即使在用户退出时也不受影响

















以上是关于crontab的主要内容,如果未能解决你的问题,请参考以下文章

利用crontab自动更新SVN代码

crontab每秒执行URL接口

linux crontab定时任务调用CI框架PHP代码

linux定时执行php代码-定时计划crontab

django-crontab定时任务

crontab Linux下 crontab 命令的用法:sudo crontab -?