写一个定时删除指定目录下当期日期前一天的shell脚本
时间: 2023-07-13 09:24:10 浏览: 108
可以使用以下shell脚本来定时删除指定目录下当期日期前一天的文件:
```bash
#!/bin/bash
# 指定目录路径
dir_path="/path/to/directory"
# 获取当期日期前一天的日期
delete_date=$(date -d "yesterday" +%Y-%m-%d)
# 删除指定目录下当期日期前一天的文件
find $dir_path -type f -name "*$delete_date*" -delete
```
将上述脚本保存为一个可执行文件,比如 `delete_old_files.sh`,然后设置定时任务来执行该脚本即可。
例如,每天凌晨2点执行该脚本,可以使用以下命令来设置定时任务:
```
0 2 * * * /path/to/delete_old_files.sh
```
这个定时任务的意思是,在每天的凌晨2点执行 `/path/to/delete_old_files.sh` 脚本。
相关问题
用shell写一个脚本,定时删除/var/log/kudu目录下的日志,要求只删除名字包含info的.log日志,只保留最新三天内的日志
以下是一个 shell 脚本的示例:
```
#!/bin/bash
# 获取当前时间
now=$(date +%s)
# 计算三天前的时间戳
three_days_ago=$((now - 3 * 24 * 3600))
# 进入日志目录
cd /var/log/kudu
# 遍历所有.log日志
for log in *.log; do
# 判断文件名是否包含"info"
if [[ "$log" == *"info"* ]]; then
# 获取文件的修改时间
mtime=$(stat -c %Y "$log")
# 判断文件的修改时间是否早于三天前
if [[ "$mtime" -lt "$three_days_ago" ]]; then
# 删除文件
rm "$log"
fi
fi
done
```
请注意,上面的代码仅供参考,在您的实际环境中可能需要做一些修改。此外,请谨慎运行任何删除文件的脚本,以免误删除重要文件。
11天定时清理es数据shell脚本
好的,针对这个问题,我可以给出一个示例的 shell 脚本来实现定时清理 Elasticsearch 数据的功能。具体的脚本如下:
```shell
#!/bin/bash
# Elasticsearch 集群节点地址
ES_HOST="localhost:9200"
# 数据保存的索引名称
INDEX_NAME="my_index"
# 删除索引数据的时间阈值,单位为天
DAYS_THRESHOLD=11
# 获取当前时间
CURRENT_DATE=$(date +%s)
# 计算删除数据的时间戳
DELETE_DATE=$(expr $CURRENT_DATE - $DAYS_THRESHOLD \* 24 \* 60 \* 60)
# 构建删除请求体
DELETE_REQUEST_BODY="{\"query\":{\"range\":{\"@timestamp\":{\"lte\":$DELETE_DATE}}}}"
# 发送删除请求
curl -XPOST "$ES_HOST/$INDEX_NAME/_delete_by_query" -H 'Content-Type: application/json' -d "$DELETE_REQUEST_BODY"
```
该脚本的主要作用是利用 Elasticsearch 的 Delete By Query API 删除指定时间前的数据。其中,需要根据实际情况修改 ES_HOST、INDEX_NAME 和 DAYS_THRESHOLD 这三个变量。将脚本保存为一个文件,例如 `es_clean.sh`,然后使用 crontab 工具设置定时任务即可。例如,设置每天凌晨 3 点钟运行脚本的任务可以使用如下命令:
```shell
0 3 * * * /path/to/es_clean.sh
```
这样,脚本就会在每天的凌晨 3 点钟自动运行,定期清理 Elasticsearch 中指定索引的数据。
阅读全文