shell脚本定期删除日志文件

假设某系统按天记录日志文件,即每天一个日志文件。随着系统的运行,日志文件越来越多。

app.log
app.log.2019-06-18
app.log.2019-06-17
app.log.2019-06-16
app.log.2019-06-15
app.log.2019-06-14
app.log.2019-06-13
app.log.2019-06-12
app.log.2019-06-11
app.log.2019-06-10
...

如何定期清除过期的日志呢?比如,只需要保留最近7天的日志备份?

 

对于linux系统,实现起来很方便:一个删除脚本 + crontab就可实现这个目标

1. 创建自动清理日志的sheel脚本(假定log日志在目录/var/app下),autoCleanLog.sh

#!/bin/bash

searchPath=/var/app
cd ${searchPath}

declare -i total=`ls app.log.* | wc -l`
declare -i nums=$total-7

if [ "${nums}" -ge 1 ];then
    rm -rf `ls -tr app.log.* | head -${nums}`
fi


2. 赋予脚本可执行权限

chmod +x autoCleanLog.sh

3.采用crontab创建定期任务

每天凌晨1点执行(假定清除脚本在目录/var/app下),编辑crontab,增加如下行:

00 01 * * * /var/app/autoCleanLog.sh

让改动的crontab立即生效

sudo /etc/init.d/cron restart

这样就大功告成,此脚本每天凌晨就会启动一次,自动删除7天前备份的log文件。
 

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 可以使用crontab定时执行shell脚本删除日志文件。具体步骤如下: 1. 编写shell脚本,使用rm命令删除指定目录下的日志文件。 2. 使用crontab命令添加定时任务,设置定时执行的时间和执行的shell脚本路径。 例如,每天凌晨3点执行删除日志脚本,可以在终端输入以下命令: ``` crontab -e ``` 然后在打开的文件中添加以下内容: ``` 3 * * * /path/to/your/script.sh ``` 其中,`/path/to/your/script.sh`是你编写的删除日志shell脚本的路径。 保存并退出文件即可。这样,每天凌晨3点就会自动执行删除日志脚本了。 ### 回答2: Shell脚本定期删除日志是常用的自动化管理方法之一。日志文件是记录系统运行情况的重要信息,但是长时间的日志文件堆积会占用大量的存储空间,也对系统性能造成一定的影响,因此定期删除日志文件是很有必要的。 Shell脚本定期删除日志的实现原理是利用Linux系统中的crontab工具创建定时任务。crontab可以在固定的时间、日期以及周期性时间内执行预设的任务,而Shell脚本就是其中的一种任务类型。定时任务的设置步骤通常包括以下几步: 1. 创建shell脚本,编写删除日志的命令 2. 给脚本添加执行权限 3. 使用crontab命令添加定时任务 4. 保存定时任务并重启crontab服务 简单的shell脚本定期删除日志的实现代码如下: ``` #!/bin/bash log_path=/var/log log_name=access.log log_days=7 find $log_path -name $log_name -type f -mtime +$log_days -exec rm -f {} \; ``` 上述脚本中,log_path表示日志的存储路径,log_name表示日志文件名,log_days表示日志文件的保存天数。find命令根据指定的条件查找符合条件的文件,并执行删除操作。其中,-name选项指定文件名,-type选项指定文件类型,-mtime选项指定文件的修改时间。 将该脚本保存为log_clean.sh,并添加执行权限。然后创建一个定时任务,每天执行一次脚本删除超过7天的日志文件。具体的步骤如下: 1. 打开终端,输入命令“crontab -e”进入crontab配置文件 2. 在配置文件中添加以下行: ``` 0 0 * * * /path/to/log_clean.sh ``` 其中,“0 0 * * *”表示每天0点执行一次,“/path/to/log_clean.sh”表示log_clean.sh脚本的绝对路径。 3. 保存文件并退出crontab 4. 重启crontab服务 至此,每天的0点,系统就会自动执行log_clean.sh脚本删除超过7天的日志文件。 总之,Shell脚本定期删除日志是系统运行管理的必要措施之一,能够有效避免日志文件过大对系统性能的影响,提高系统的运行效率。 ### 回答3: 当我们在使用服务器的时候,可能会产生大量的日志文件,如果不及时清理,会占用服务器的存储空间,同时也会影响服务器的运行效率。因此,设置定期删除日志shell脚本是非常必要的。 1. 编写脚本 首先,我们需要编写一个shell脚本,用来删除过期的日志文件。可以使用find命令来查找所有过期的日志文件,然后使用rm命令删除这些文件。如下所示: ```bash #!/bin/bash # 日志存储目录 LOG_DIR=/var/log # 删除日志文件的天数 DAYS=30 # 查找并删除过期日志文件 find $LOG_DIR -mtime +$DAYS -type f -delete ``` 注意,上述脚本中的LOG_DIR和DAYS变量可以根据实际需要进行修改,以适应不同的环境。 2. 添加定时任务 接下来,我们需要将脚本添加到系统的定时任务中,以便定期执行。可以使用crontab命令来进行设置。如下所示: ```bash $ crontab -e ``` 然后在打开的文件中添加以下行: ```bash 0 0 * * * /path/to/logcleanup.sh ``` 这里的0 0 * * *表示每天的0点0分执行,/path/to/logcleanup.sh表示要执行的脚本文件的完整路径。 3. 测试脚本 最后,我们需要测试脚本是否能够正常工作。可以手动运行脚本,然后查看日志文件是否被删除。如下所示: ```bash $ sh /path/to/logcleanup.sh ``` 如果一切正常,则可以放心地让系统定时执行这个脚本了。 综上所述,定期删除日志是一项非常必要的工作,可以提高服务器的运行效率,同时也可以提升安全性。希望本文对大家有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值