1、新建删除脚本 del.sh
#!/bin/bash #保留文件数 ReservedNum=5 ##保留最新的五个文件 FileDir=/data/bak ##文件目录 date=$(date "+%Y%m%d-%H%M%S") FileNum=$(ls -l $FileDir|grep ^- |wc -l) while(( $FileNum > $ReservedNum)) do OldFile=$(ls -rt $FileDir| head -1) echo $date "Delete File:"$OldFile rm -rf $FileDir/$OldFile let "FileNum--" done
2、添加自动运行任务crontab
如果未安装crontab,先安装
yum install crontabs -y
添加自动运行任务
crontab -e
0 0 * * * bash /home/sh/del.sh
意思是每天凌晨0点,自动运行 /home/sh文件夹下的del.sh脚本

查看任务
crontab -l
删除指定目录下的文件夹或者文件,指定天数
#!/bin/bash find /home/ -name 'test*' -type f -mtime +5 | xargs rm -rf
删除/home目录下5天以前的 文件名类似 test* 的文件
-type d 文件夹
find /folder/deleteFile/ -name "*.*" |xargs rm -rf '*'
注意:如果你的文件夹下信息太多的话,使用rm命令可能会报错“ /bin/rm: Argument list too long ”
#rm -rf /folder/deleteFile/*
2、在xshell中 输入crontab –e打开配置文件,在文件中新增一个任务行,修改完成后保存,注意sh的路径为你的sh所在的路径


备注:crontab中增加的任务行的含义,可以通过vi /etc/crontab查看,以上*/5 * * * *代表的则是5min执行一次sh脚本
执行java任务的时候,需要在编写脚本的时候加入java环境,例如
#! /bin/bash
source /etc/profile nohup /usr/local/java/bin/java -jar /opt/sample-1.0.0.jar > /dev/null 2>&1 &
7 14 * * * /usr/bin/kubectl --kubeconfig=/root/.kube/config delete pod -l app=bdms-job-bak -n meeu-prod >> /tmp/cron.log 2>&1
https://tooltt.com/crontab/c/88.html
晚上11点到早上7点之间,每隔一小时重启smb
0 23-7 * * * /etc/init.d/smb restart
https://blog.csdn.net/weixin_43231331/article/details/113287682
查看执行记录可以用 tail -f /var/log/cron
cat /var/log/cron |grep xx 查看记录详情 vi -b /var/log/cron 查看邮件发送 cat /var/log/maillog
测试验证网站
https://tool.lu/crontab/
####脚本中包含-WhatIf参数,这会在执行删除前显示哪些文件夹会被删除,而不会真正执行删除操作。如果你想实际删除文件夹,请去掉 -WhatIf。
# 设置要删除文件夹的目录列表
$folders = @(
"D:\a\1",
"D:\a\2"
) 
# 设置要保留文件夹的天数  
$daysToKeep = 92
# 获取当前日期和指定天数前日期
$expireDate = (Get-Date).AddDays(-$daysToKeep)
# 遍历每个目录
Foreach($folder in $folders){
  # 获取目录下所有文件夹
  $subfolders = Get-ChildItem $folder -Directory 
  # 删除指定天数前的文件夹 
  Foreach($subfolder in $subfolders){
    # 判断文件夹创建时间是否早于指定日期(文件夹最后修改时间参数是LastWriteTime)
    if($subfolder.CreationTime -lt $expireDate){
      # 删除文件夹
      Write-Host "Removing folder '$($subfolder.FullName)'"
      Remove-Item $subfolder.FullName -Force -Recurse -WhatIf
}
}
}
或者
####脚本中包含-WhatIf参数,这会在执行删除前显示哪些文件夹会被删除,而不会真正执行删除操作。如果你想实际删除文件夹,请去掉 -WhatIf。
# 定义要检查的目录列表
$folders = @(
"D:\a\1",
"D:\a\2"
)
# 修改为你希望的天数阈值
$daysToKeep = 62
# 获取N天前的日期时间
$refDate = (Get-Date).AddDays(-$daysToKeep)
# 遍历目录列表
foreach ($directory in $folders) {
    if (Test-Path -Path $directory -PathType Container) {
        # 获取指定目录下所有子文件夹,筛选出最后修改时间早于$refDate的项
        $foldersToDelete = Get-ChildItem -Path $directory -Directory | Where-Object { $_.LastWriteTime -lt $refDate }
        
        # 遍历这些文件夹并删除它们,-WhatIf参数用于预览
        foreach ($folder in $foldersToDelete) {
            Write-Host "ready to delete: $($folder.FullName)"
            Remove-Item -Path $folder.FullName -Recurse -Force -WhatIf
        }
    } 
}
步骤
1. 打开任务计划程序:•按下Win + R键打开“运行”对话框,输入taskschd.msc后按回车,或者在Windows搜索栏中搜索“任务计划程序”并打开。 2. 创建基本任务:•在任务计划程序的右侧操作面板中,点击“创建基本任务...”。 3. 命名任务:•在创建基本任务向导中,为你的任务输入一个名称(例如“定时运行 PowerShell 脚本”),并可选填写描述,然后点击“下一步”。 4. 触发器选择:•选择你希望任务执行的频率。例如,如果你想每天运行脚本,就选择“每天”,然后根据需要设置具体时间和日期,点击“下一步”。 5. 操作选择:•在操作步骤中,选择“启动程序”,然后点击“下一步”。 6.浏览到PowerShell可执行文件:•在“程序或脚本”框中,输入powershell.exe的完整路径,通常是C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe。•在“添加参数(可选)”框中,输入 -ExecutionPolicy Bypass -File "你的脚本的完整路径"。例如,如果你的脚本位于D:\Scripts\myscript.ps1,则输入-ExecutionPolicy Bypass -File "D:\tools\DeleteOldFolders-1.ps1"。-ExecutionPolicy Bypass是为了避免PowerShell的执行策略阻止脚本运行。•点击“下一步”。 7. 确认设置:•查看摘要信息,确认无误后点击“完成”
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号