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/

 
windows系统定时清理指定目录中指定时间段的多个文件夹

####脚本中包含-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. 确认设置:•查看摘要信息,确认无误后点击“完成”

 

 
 
 
 
 
posted on 2019-10-28 09:39  小油2018  阅读(1857)  评论(0)    收藏  举报