Linux 定时清理日志

news/2024/10/24 16:07:06/文章来源:https://www.cnblogs.com/levi125/p/18499788

在 Linux 系统中,你可以使用 cron 作业来定时运行一个清理日志的脚本。以下是一个简单的示例,包括一个用于清理日志的脚本和一个用于设置定时任务的 cron 作业。

1. 创建清理日志的脚本

首先,创建一个脚本文件,例如 cleanup_logs.sh,并赋予其可执行权限。这个脚本将删除指定目录下超过指定天数的日志文件。

#!/bin/bash# 日志目录
LOG_DIR="/path/to/your/logs"# 保留的天数
DAYS_TO_KEEP=30# 查找并删除超过指定天数的日志文件
find "$LOG_DIR" -type f -name "*.log" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;# 清空特定的日志文件
LOG_FILE="/path/to/your/nohup.log"  
if [ -f "$LOG_FILE" ]; then  cat /dev/null > "$LOG_FILE"  echo "Log file $LOG_FILE has been truncated (emptied)."  
else  echo "Log file $LOG_FILE does not exist."  
fi  # 打印清理结果
echo "Logs older than $DAYS_TO_KEEP days in $LOG_DIR have been deleted."

将上述脚本保存为 cleanup_logs.sh,并替换 /path/to/your/logs 为你实际的日志目录路径。然后,赋予脚本可执行权限:

chmod +x cleanup_logs.sh

2. 设置 cron 作业

接下来,使用 cron 来定时运行这个脚本。你可以使用 crontab -e 命令来编辑当前用户的 cron 表。

crontab -e

cron 表中添加一行,以每天凌晨 2 点运行这个脚本。例如:

0 2 * * * /path/to/your/cleanup_logs.sh

/path/to/your/cleanup_logs.sh 替换为你实际的脚本路径。

3. 保存并退出 cron 表编辑器

保存并退出编辑器(通常是 Vim 或 Nano,保存并退出的命令可能有所不同)。

4. 验证 cron 作业

你可以使用以下命令来查看当前的 cron 作业,以确保你的新作业已被添加:

crontab -l

注意事项

  1. 权限:确保 cron 作业运行的用户有权访问和删除日志目录中的文件。
  2. 日志轮转:对于重要的日志文件,建议使用 logrotate 等工具进行日志轮转,而不是简单地删除。
  3. 测试:在正式使用前,先在测试环境中验证脚本和 cron 作业的正确性。

通过上述步骤,你可以设置一个定时任务来清理指定目录下的日志文件。

关键命令解析

这条命令是 find 命令的一个应用实例,用于在文件系统中查找并删除特定条件的文件。下面是对这条命令的详细解释:

find "$LOG_DIR" -type f -name "*.log" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;
  • find: 这是用于在文件系统中搜索文件和目录的命令。

  • "$LOG_DIR": 这是 find 命令搜索的起始目录。$LOG_DIR 是一个变量,它应该在脚本中被定义并赋予实际的日志目录路径。使用双引号是为了确保如果路径中包含空格或特殊字符,它们会被正确处理。

  • -type f: 这个选项告诉 find 命令只搜索文件(不包括目录、链接等)。

  • -name "*.log": 这个选项用于指定搜索的文件名模式。*.log 表示所有以 .log 结尾的文件。

  • -mtime +$DAYS_TO_KEEP: 这个选项用于指定文件的修改时间。-mtime 表示文件的修改时间(以天为单位),而 +$DAYS_TO_KEEP 表示查找修改时间超过 $DAYS_TO_KEEP 天的文件。$DAYS_TO_KEEP 是一个变量,它应该在脚本中被定义,并赋予你想要保留的日志天数。

  • -exec rm -f {} \;: 这个选项用于对找到的每个文件执行指定的命令。在这个例子中,命令是 rm -f,用于删除文件。{} 是一个特殊的字符串,它会被 find 命令找到的每个文件的路径所替换。\; 表示命令的结束。注意,分号前面有一个反斜杠,这是为了防止它在 shell 中被解释为命令的结束。

综上所述,这条命令的作用是在 $LOG_DIR 目录及其子目录中查找所有以 .log 结尾、且修改时间超过 $DAYS_TO_KEEP 天的文件,并将它们删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/821222.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

团队练习记录2024.10.23

比赛链接:https://codeforces.com/gym/104976 D.Operator Precedence队友解的,想办法让第二个式子中括号内数值为1,所以就2,-1交替,最后一个选1可逆推,第一个为2*n-3 #include<iostream> #include<queue> #include<map> #include<set> #include&…

debian libc.musl-x86_64.so.1 = not found

apt-get install musl-devln -s /usr/lib/x86_64-linux-musl/libc.so /lib/libc.musl-x86_64.so.1

MySQL 复习(一):建表约束

MySQL 复习(一):建表约束@目录MySQL 复习(一):建表约束1. 主键约束1.1 添加主键约束1.1.1 建表前添加主键约束1.1.2 建表后添加主键约束1.2 删除主键约束2. 外键约束2.1 添加外键约束2.1.1 建表前添加外键约束2.1.2 建表后添加外键约束2.2 删除外键约束3. 自增约束…

[模板引擎/文本渲染引擎] Jinjia2重要特性的使用指南

1 使用指南 CASE 为变量设置默认值private final static Jinjava JINJAVA = new Jinjava();/** 为变量设置默认值 | 共计 3 种方法 **/@Testpublic void defaultValueTest(){//{{ variable|default(default_value) }}// my_dict是一个字典,其中只有一个键值对。在模板中访问 …

Docker常用命令记录(随时更新)

docker 使用命令记录Docker 常用命令 镜像操作保存镜像为tar包 docker save -o <文件名>.tar <镜像名>:<版本号>例如: docker save -o myimage.tar myimage:latest从tar包加载镜像 docker load -i <文件名>.tar例如: docker load -i myimage.tar查看…

强化学习的数学原理-03贝尔曼最优公式

目录最优策略和公式推导右侧最优化问题公式求解以及最优性Contraction mapping theorem(压缩映射定理)解决贝尔曼最优公式分析最优策略(analyzing optimal policies)Summary 最优策略和公式推导 首先定义一个策略比另一个策略好: \[v_{\pi_{1}}(s) \ge v_{\pi_{2}}(s) \quad…

css3实现文字线性渐变,css3实现背景渐变

<div class=who1>我是线性渐变文字我是线性渐变文字我是线性渐变文字我</div> <div class=who2>我是背景渐变我是背景渐变我是背景渐变我是背景渐变我</div>.who1{width:400px; background: linear-gradient(to right, #ff0000, #ffff00); /*设置渐…

吉客云数据集成到金蝶云星空:盘盈入库单对接方案

吉客云数据集成到金蝶云星空:盘盈入库单对接方案 在企业资源管理中,数据的准确性和实时性至关重要。本文将分享一个具体的系统对接集成案例,即如何将吉客云中的盘盈入库单数据高效、可靠地集成到金蝶云星空中,形成盘盈单。 为了实现这一目标,我们采用了数据集成平台,通过…

Linux 中 awk命令整列的替换

001、测试数据[root@localhost test2]# ls a.txt [root@localhost test2]# cat a.txt 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 …

ElevenLabs Voice Design :可通过文本创建个性化语音;苹果推出首个开发者测试版丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

nginx总结

使用auth_basic控制访问nginx代理的网站,直接访问如果需要添加安全性,如需要输入用户名+密码才能访问页面,可以通过nginx的auth_baisc配置来实现检查htpasswd 一般nginx的安装之后会自带或者nginx容器镜像自带 root@ea6255db9f51:/config/nginx/site-confs# htpasswd Usage:…

1024程序员节Fast Request发福利啦

今天是 1024 程序员节,祝各位老铁程序员节快乐!愿大家安全上线,永无 bug,代码行行如丝滑。 首先,特别感谢大家一直以来对 Fast Request 的支持与厚爱。在这个属于程序员的节日里,我们准备了一波诚意满满的福利,送给每一位辛勤付出的你! 以下福利是我们对大家辛勤付出的…