logo  

运维备忘录

运维备忘录
作者: 陈安廉

摘要:软件开发进阶系列


crontab用法


2021-07-05 11:07:09


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 &