Fork me on GitHub

Linux常用crontab

crontab定时器

格式

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script} 

  • minute: 区间为 0 – 59 
  • hour: 区间为0 – 23 
  • day-of-month: 区间为0 – 31 
  • month: 区间为1 – 12. 1 是1月. 12是12月. 
  • Day-of-week: 区间为0 – 7. 周日可以是0或7.

添加定时器

crontab -e : 修改crontab文件. 如果文件不存在会自动创建,在文件里添加。 
crontab -r : 删除crontab文件。
crontab -ir : 删除crontab文件前提醒用户。

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。
同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

查看已有定时器

crontab -l    //查看用户的定时器(有的木马之所以删不完就是因为用了定时器定时下载)

查看执行记录

tail -n 2000 /var/log/cron|grep xxx.sh

删除n天前文件

删除/root/tomcat/logs/目录下,mtime指定的30天前的,名为*.log的文件。

find /root/tomcat/logs/  -type f -mtime +30 -name "*.log" -exec rm -rf {} \;

-exec把find到的文件名作为参数传递给后面的命令行,代替{}的部分
-exec后便跟的命令行,必须用“ \;”结束。-exec必须由一个 ; 结束,而因为通常 shell 都会对 ; 进行处理,所以用 \; 防止这种情况。

-exec rm -rf {} \;    #前面find的参数一次性传给后面
#可以替换为
| xargs rm -rf     #分批次传给后面

创建文件编辑脚本并赋予执行权限

touch autoDelLog.sh
vi autoDelLog.sh
chmod 777 autoDelLog.sh

加入crontab文件

crontab -e

编辑文件,加入凌晨00:00执行autoDelLog.sh的配置

0 0 * * * /root/autoDelLog.sh

查看

crontab -l

自动备份Mysql

mysqldump --opt  -uroot -p123456 -h127.0.0.1 --databases dbname--ignore-table=gmzntc2018.table1 | gzip>/db_back/dbname_`date +%F`.zip

自动删除三天前备份文件

if find /dbbackup -mtime -3 -name '*.sql' -exec ls -lrt {} \; | grep -v '^d' >/dev/null 
then
    find /dbbackup -type f -mtime +3 -name "*.sql" -exec rm -rf {} \;
else
    echo "delete fail";
fi

其他常用脚本

posted @ 2020-05-29 11:52  秋夜雨巷  阅读(449)  评论(0编辑  收藏  举报