需求
某个服务器的日志文件随着时间的增长越来越多,我不想自己一个个的删除,但是不删除的话,会很麻烦,万一因为日志文件导致内存满了就麻烦了!
实现步骤
1、写好实现的脚本
我要查找>200M的日志文件
find / -type f -size +200M -name "*.log"
2、删除脚本的命令
进入目录 cd /dev
创建文件夹 mkdir sh
进入文件夹 cd sh
创建脚本文件 touch delete_log.sh
编辑脚本文件 vi delete_log.sh
内容如下
#!/bin/bash
for name in $(find / -type f -size +100M -name "*.log");do
rm -rf ${name}
done
在执行脚本之前,我们要看看是否有大小大于100M的日志文件
sudo find / -type f -size +100M -name "*.log"
有三个符合的日志文件;
现在我创建一个定时任务
这个是编辑定时任务
crontab -e
59 13 * * * /dev/sh/delete_log.sh
当前是13:58 我希望13:59执行一次
等一下把
判断脚本是否有效,就是查看日志文件,刚才符合条件的有三个,如果13:59之后,三个变成0个,那么说明脚本生效
这里有一个插曲,怎么也不起作用,后来发现执行./delete_log.sh
-bash: ./log.sh: Permission denied
我以为是名称的问题,把delete_log.sh改成log.sh也不行,后来发现执行方式不对
sh ./log.sh
现在sh脚本起到效果了
执行shell时,如果出现‘line 8: syntax error near unexpected token `$'do\r''^C’ 报错,可能因为在windows下编辑的格式问题,在notepad下转化即可
参考:写shell,运行出错:syntax error near unexpected token `$’do\r” - 程序员大本营 (pianshen.com)
参考文章:
(359条消息) Linux定时启动运行程序的方法_linux定时执行命令_宗而研之的博客-CSDN博客