crontab -e 打开自动任务脚本,这种不需要指定user,如果是编辑/etc/crontab文件,则要在命令前指定执行用户,比如root, 可参考这里

时间配置5个*号,时间单位依次是:0-59分钟、0-23小时、1-31日期、1-12月、0-7周:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

另外:

“*” 代表取值范围内的数字,
“/” 代表”每”,
“-” 代表从某个数字到某个数字,
“,” 分开几个离散的数字

保存配置,重启service cron restart生效,还有startstopreloadstatus几个命令。

centos下名称是crond,或者用systemctl crond restart去控制

crontab -l 查看任务脚本

更多可以参考这里

  • 案例1,每几个月更新一下certbot的证书

添加以下两行,第一行为自动更新certbot(方案为2,5,8,11这几个月的1号)以及nginx重加载,第二为测试任务, 到期记录日志,验证是否如期工作:

0 0 1 2,5,8,11 * /var/www/certbot-auto renew --quiet;nginx -s reload
0 0 1 2,5,8,11 * date >> ~/time_tao.log
  • 案例2,每天0点将日志文件切割归档
0 0 * * *  cd /var/www/toc/ && nohup sh split_nohup.sh &

两个命令(1)进入目录(2)执行一个脚本,用&&连接起来。

  • 案例3,每分钟请求维护接口
*/1 * * * * /usr/bin/curl -s -o /dev/null "http://172.26.71.241:77/v1/transaction/repair?hint=123&limit=80"

请求接口,-s -o /dev/null不记录返回信息,注意这里的url要用引号,否则参数可能丢失。

  • 案例4,每天10:35自动填写问卷调查
35 10 * * * root /usr/bin/curl -G -v "http://172.16.3.19:88/v1/fill?" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"
-H "User-Agent: Chrome/53.0.2875.116" --data-urlencode
'submitdata=1$肖杰华}2$5}3$36}4$2}5$(跳过)}6$2}7$(跳过)}8$广东省深圳市南山区粤海街道高新南九道10号深圳>湾科技生态园[113.95144,22.5301]'

-G -v会打印连接信息,及详情的request/response信息。提交信息用单引号引起来。