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
生效,还有start
,stop
,reload
,status
几个命令。
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信息。提交信息用单引号引起来。