shell定期删除日志脚本

author author     2023-04-03     654

关键词:

你好,我对shell脚本不是太熟,现在遇到个需求,要将目录下的隔日日志文件删除,用一个脚本定期执行,怎么去做这个,如目录为/tmp/logs/,下面的日志文件名称为comet.root.....20140721(日期格式).log.版本号,求解,脚本要先处理知道有多少非当日的日志文件,然后对符合规则的文件进行删除操作
目录下的文件hsperfdata comet.master.root.log.INFO.20140722-091429.4698
gopush-cluster-comet.pid
comet.master.root.log.WARNING.20140722-091429.4698 hello
其中带日期的是我要删除的,下面是我的脚本
dt = "date -d '1 days ago' +%Y%m%d"
#计算前一天的日期 files = 'ls /tmp/*log.*.$dt*' for $file in $files
do rm -rf $file done
报错如下,语法有问题,帮忙看下./gf.sh: line 1: dt:
command not found ./gf.sh: |line 2: files: command not found|./gf.sh:
line 6: `$file': not a valid identifier

参考技术A 脚本如下:

#!/bin/bash
# vim /etc/cron.d/backup
#Author:xxxx
#Date:20140619

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

DIR="/tmp/logs"
file_num=`find $DIR/*.log.* -mtime +1 |wc -l`
echo "have $file_num file"
find $DIR/*.log.* -mtime +1 |xargs rm -rf \; >/dev/null 2>&1
====================================================
上面脚本能完成你的要求

一定要照你的脚本写,没有测试,你自己修改一下,思路是这样的。
上面的直接用Find找到文件的修改时间,直接定位文件删除。

下面这个匹配文件中的名字中包含指定时间的文件,条件为真,删除。
计算加1.
你自己写的时间匹配有问题好像。

++++++++++++++++++++++++++++++++++++

tianshu=1
m=0

sj=`date +%Y%m%d -d -$tianshuday`

for i in `ls *.log.*`
do
echo $i |grep ”$sj“ && rm -f $i
if [ $? = 0 ];then

m++
fi

done
echo $m本回答被提问者采纳
参考技术B #!/bin/bash
files=$(ls /tmp/logs/)
for file in $files
do
getdate=$(cut -d . -f x $file)
if[ $(date +%y%m%d) -gt $getdate ];then
rm $file
fi
done

PS:其中第五行中的x为文件名中日期格式部分是第几段(以.分割),在第几段则x换成几

补充:报错原因,先检查你的代码头写了#!/bin/bash吗?如果写了再检查你的运行路径对不对,试试绝对路径。最后那个$file的报错,把代码中for循环中file前面的$去掉。

怎样写shell脚本,定期执行删除centos5.6中apache的log系统日志文件.只保留最近2个?

...0想只保留最近2个日志文件.用什么方式?怎样写shell脚本,定期执行删除其余日志文件参考技术A首先,写个脚本命名为rm_apache_errlog.sh#!/bin/shfind/var/log/httpd/error_log.*-ctime+480-execrm-rf\;crontab-e编辑计划任务每4小时执行一次**/4***/bin... 查看详情

如何用shell来实现定期删除一个月前的日志?

参考技术A你怎么判断这个是30天前的呢?ls-la|awk'print$6,$7'??还是用日志名? 查看详情

如何查看tomcat日志定期删除

参考技术A定期删除TOMCAT日志文件,参考代码如下:#!/bin/bash#清理tomcat日志的脚本#日志大小限制设置(1M字节),超出即清理LOG_FILE_SIZE=1024000#定义日志文件位置logs=(/srv/tomcat6/logs/catalina.out/usr/share/tomcat6/logs/catalina.ou本回答被提问... 查看详情

racrman定期备份及删除脚本

oraclerman备份及删除脚本、1.环境说明:os--linuxoracle--11.2.03一台服务器上两个库orclprodRAC双节点环境,采用节点1执行定制备份及删除脚本2.备份策略说明:1)周1周4周6执行全库备份,加上备份产生的归档,周2周3周日执行归档日志备... 查看详情

定期删除tomcat日志文件

TOMCAT日志文件一段时间会累积到几十个G,我想做一个定期删除某个时间的功能,比如每个月底删除上个月的日志文件,保持至少要保留一个月的日志文件,TOMCAT能不能怎么样配置达到这样的效果?或者批处理能不能动态的控制... 查看详情

常见的一些shell脚本书写,定时删除,压缩备份(代码片段)

删除与备份videoportal日志 写执行删除过期日志的shell脚本 以下参考文档:https://blog.csdn.net/yuan882696yan/article/details/77885339 执行删除/home/test/REPORT/send/videoportal23890234823904.txt这个目录下文档(当前是保留五天日志)  查看详情

十万火高分急求一个shell脚本,下午2点就要要了

...rgs-irm-rfumount/tmp/netdiskrm-rf/tmp/netdisk你测试一下这个脚本,定期执行这个脚本就行了全部手写的,期待采纳追问你好,我现在脚本差不多写出来了。但是不是很懂find,用的最笨的方法,根据文件名来的。但是现在有一个问题。我... 查看详情

shell脚本删除30天之前日志

参考技术A1、新建sh文件删除30天以前的文件#!/bin/bashfind/home/sdu/server/node1/logs/-mtime+30-print|xargsrm-rf //注释-mtime是距离上一次修改时间-print是只显示文件xargs是获取find查找的结果在通过rm命令删除2、部署服务器3、设置crontab定时... 查看详情

学透shell带你写常用的100个shell脚本(一)定时删除过期文件

...志、临时压缩未清理的垃圾文件、过久的备份文件,手动删除过于繁琐,可以通过此脚本进行删除,如有不同场景,适量修改即可目标:删除/home/logs/下超过30天的日志文件,文件名称为xxxx-service-2022-06-18-20.out如果只需单次清理... 查看详情

定时删除日志

...了。。怎么办?每次都是登录到服务器,切换到对应目录删除文件。一次两次还好,那要是经常这样谁受得了啊。那我们接下来就编写一个shell脚本让服务器定时去执行,嗯,就是一行linux语句,对,就是这么简单!首先,创建... 查看详情

oraclewindows/linux定期清理归档日志

...时任务,执行crontab-l到此整个Linux下的配置已结束,注意定期观察任务的运行情况。 查看详情

linux上定期清空持续输出的日志文件(代码片段)

Linux定期清空持续输出的日志文件的方法(nohup)前言在nohup输出文件过程中,很容易出现输出日志文件过大的问题,网上的炫技大佬们太多了,让愚钝的阿瓜很难一下子捕捉到关键信息,虽然方法很简单,但阿瓜记性很差,难免... 查看详情

linux系统shell脚本之定期清理备份文件(代码片段)

Linux系统shell脚本之定期清理备份文件一、脚本要求二、脚本内容一、脚本要求1.在/backup/mysql的备份目录下,定期清理备份文件2.清理频率为30天执行清理一次3.清理脚本每一周清理一次二、脚本内容[root@192scripts]#catdel_mysql.s... 查看详情

shell脚本专题(07):文件由cfs到bos(代码片段)

...文件存放在cfs内,由于cfs使用费用较高,容量较小,需要定期手动转移至空间更大费用更小的bos内。本程序就是将手动操作改为自动化方式。涉及日志输出、文件比对、文件复制、文件删除、监控告警等。二、名词解释cfs:文件... 查看详情

脚本实现文件备份和定期删除备份文件

crontab-l43***tar-czvf/home/backup/nas_`date+%Y%m%d`.tar.gz/data/website/uploadfiles/data/website/media44***/bin/find/home/backup-name*.tar.gz-mtime+7-typef|xargsrm-rf{};  chkconfig--listcro 查看详情

使用shell脚本定期检查mysql服务是否正常运行(代码片段)

以MySQL服务为例,假设我们想定期检查该服务是否正常运行,如果运行异常则重启该服务,从而确保服务尽快恢复。在Linux系统中,如果我们想查看某个服务的运行状态,可以使用systemctlstatus命令,例如ÿ... 查看详情

mysql数据库如何实现定期删除数据库一些东西

MySQL5.1以后版本中有Event,这是类似Oracle中的job可以通过创建Event,然后在里面调用删除过期记录的存储过程即可实现定时每天备份mysql并定时删除上月记录(脚本)ouwsh|September3,200910:41|Linux/Unix相关|阅读(1536)|评论(0)shell脚本:备份... 查看详情

linux定时删除日志文件/文件夹

参考技术A1,新建脚本文件touch/export/Shell/auto-del-log.sh2,修改脚本文件权限chmod+x/export/Shell/auto-del-log.sh3,脚本文件执行内容#!/bin/shfind/export/Instances/pplanT.jd.local/server1/logs-name"$(date"+%Y").*"-execrm-rf\;#!/bin/shfind/export/In... 查看详情