Linux 定时删除文件或文件夹的shell脚本
一、删除XX天(默认10天)之前某个目录下面带.log的日志文件并且输出文件显示删除的文件#!/bin/sh #如果没有输入变量值默认天数为10 start$(date %y-%m-%d-%H%M%m) File/temp/delete_$start.txt FilePath/data echo $File if [ ! -n $1 ]; then day10 else day$1 fi #-mtime 10 表示文件修改时间距离当前为0天的文件即距离当前时间不到1天24小时以内的文件 echo 输出日志文件 echo find $FilePath -mtime $day -name *.log* $File find $FilePath -mtime $day -name *.log* $File echo 删除日志文件 echo find $FilePath -mtime $day -name *.log* -exec rm -rf {} \; find $FilePath -mtime $day -name *.log* -exec rm -rf {} \; #访问指定日期段的文件并删除--删除2022-01-01 至2022-12-31的文件 find ./ -name *.* -newermt 2022-01-01 ! -newermt 2022-12-31 -exec rm -rf {} \;二、删除XX天(默认10天)之前的文件夹#!/bin/sh #如果没有输入变更值默认天数为10 start$(date %y-%m-%d-%H%M%m) File/temp/delete_backup_$start.txt FilePath/data/backup echo $File if [ ! -n $1 ]; then day10 else day$1 fi #删除10天之前的文件夹 echo 输出日志文件 echo find $FilePah -type d -ctime $day $File find $FilePath -type d -ctime $day $File #压缩10天之前的文件夹 echo find $FilePath -type d -ctime $day | xargs gzip -r find $FilePath -type d -ctime $day | xargs gzip -r echo 删除日志文件 echo find $FilePath -type d -ctime $day | xargs rm -rf find $FilePath -type d -ctime $day | xargs rm -rf #只看第一层目录下面的文件夹和文件 find $FilePath -maxdepth 1 -mtime $day三、清空文件内容(产生日志文件过大占用磁盘空间)可以与定时任务结合使用每天早上6点执行 0 6 * * * sh /log/CleanLogFile.sh#!/bin/bash path/log filename$path/BigLog.txt #搜索大于10KB的文件 #-size 10k #搜索小于10KB的文件 #-size -10k #搜索等于10KB的文件 #-size 10k if [ $# -ne 1 ] then #echo 默认设置文件大小为500M filesize500M else filesize$1 fi echo 设置清除文件大小$filesize if [ -f $filename ]; then rm -rf $filename echo 原始文件已删除 else echo $filename不存在 fi find $path -name *.* -size $filesize -exec ls -lh {} \; | awk { print $5,$9} $filename for line in cat $filename do #如果有匹配的内容则立即返回状态值0 echo $line | grep -q $path #$? 是指上一条命令的执行状态 0就是正常 if [ $? -eq 0 ] then #获取文件类型 filetype${line#*.} if [ $filetype zip ];then echo rm -rf $line rm -rf $line else echo 执行清空命令 cat /dev/null $line cat /dev/null $line fi fi done编写shell定时任务执行命令[rootlocalhost ~]# crontab -e10 0 * * * /data/auto-del.sh /dev/null 21查看定时任务[rootlocalhost ~]# crontab -l10 0 * * * /data/auto-del.sh /dev/null 21备注每隔30分钟root执行一次*/30 * * * * /data/auto-del.sh /dev/null 21每天晚上1点执行0 1 * * * /data/auto-del.sh /dev/null 211.通过crontab –e来创建自己的定时任务5个*的含义是第一个*是分第二个*是小时第三个*是日第4个*是月第5个*是周第6列是命令2.-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格3.find 命令三个选项用于按照时间查找单位都是小时:mtime — 文件内容上次修改时间atime — 文件被读取或访问的时间ctime — 文件状态变化时间情况一正常情况系统有service命令重启服务命令[rootcentos6 /]# service crond restart启动服务命令[rootcentos6 /]# service crond start停止服务命令[rootcentos6 /]# service crond stop4.如果需要用到环境变量必须的脚本中添加环境变量例如加载java变量export JAVA_HOME/opt/jdk1.8.0_91export CLASSPATH$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH$PATH:$LAMPP_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:${ANT_HOME}/bin四、Centos7中解压rar文件yum安装执行指令安装unar。yum install epel-release -yyum install unar -y安装完成以后直接用下列命令是unar不要拼错解压文件到当前目录unar example.rar带密码解压unar -p 123456 centos.rar五、PowerShell 命令任务管理器导出前 20 个最吃内存的进程内存csv文件Get-Process | Sort-Object WS -Descending | Select-Object -First 20 Name,{NMB;E{[math]::Round($_.WS/1MB,2)}} | Export-Csv -Encoding UTF8 -NoTypeInformation -Path $env:USERPROFILE\Desktop\mem_detail.csvMemory Compression 「把不常用的内存页实时压缩留在 RAM而不是立刻搬到硬盘」→ 用少量 CPU 换大量 I/O 时间低内存电脑最明显提速关/开步骤PowerShell 管理员Win X→终端(管理员)查状态Get-MMAgent行MemoryCompression为True表示开启。切换命令启用Enable-MMAgent -MemoryCompression禁用Disable-MMAgent -MemoryCompression重启SysMain服务或整机会话生效Restart-Service SysMain参考文献https://blog.csdn.net/weixin_42462253/article/details/148266788个人微信公众号也会同步更新请动下你的发财小手关注下谢谢