crontab用法
https://www.modb.pro/db/234766
https://cloud.tencent.com/developer/article/1857682
简介
Unix和类Unix的操作系统中的定时器。
安装
yum install crontabs
命令
crontab的使用就是编辑配置文件。
配置文件位于/var/spool/cron/<username>,其中<username >是用户名。
日志位于/var/log/cron,参考这里清理日志文件。
#列出crontab文件
crontab -l
#编辑crontab文件
crontab -e
#删除crontab文件
crontab -r
#恢复crontab文件
crontab <filename>
配置文件基本格式 :
* * * * * cmd
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
定期清理Jenkins日志
新建.sh文件vi /data/clean/clean_jenkins_log.sh, 内容如下:
#! /bin/bash
cat /dev/null > /var/log/jenkins.log
授权文件chmod 777 /data/clean/clean_jenkins_log.sh。
编辑crontab配置文件crontab -e, 加入一行配置, 每天凌晨1:30执行一次命令:
30 1 * * * /data/clean/clean_jenkins_log.sh >/dev/null &
重载配置文件systemctl reload crond.service。
定期清理Docker镜像
过程同上,.sh文件内容修改为,按镜像Tag模糊匹配进行删除:
#!/bin/bash
docker rmi -f $(docker images | awk '/^daocloud.io/ { print $3 }')
#!/bin/sh
docker rmi -f $(docker images | awk '/^ccr.ccs.tencentyun.com/ { print $3 }')
#!/bin/sh
docker rmi -f $(docker images | grep "none" | awk '{print $3}')
定期重启服务
#!/bin/sh
systemctl restart nexus.service
#!/bin/sh
systemctl restart docker.service
其他样例
#每晚的21:30 重启apache
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日的4 : 45重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#每周六、周日的1 : 10重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
#每天18 : 00至23 : 00之间每隔30分钟重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
#晚上11点到早上7点之间,每隔一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
#每一小时重启apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
#每月的4号与每周一到周三的11点重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
#一月一号的4点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
#每半小时同步一下时间
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
30 1 * * * /data/clean/clean_docker_images.sh >/dev/null &
30 2 * * * /data/clean/clean_docker_images2.sh >/dev/null &
30 3 * * * /data/clean/clean_docker_images3.sh >/dev/null &
30 4 * * * /data/clean/clean_jenkins_log.sh >/dev/null &
10 5 * * * /data/clean/restart_docker.sh >/dev/null &
30 5 * * * /data/clean/restart_nexus.sh >/dev/null &