当前位置: 首页 > news >正文

日志截断/日志中途清空/不停止程序

使用场景:

nohup ./abc.sh > 123.log 2>&1 &

若想在不停止程序的前提下减小 123.log 的占用空间或者对日志进行分割,可采用如下方法:

1. 手动截断日志

可以手动截断日志文件,把文件内容清空,但保留文件的inode,这样程序就能继续往该文件写入日志。

cp /dev/null 123.log

此命令会把 123.log 文件的内容清空,不过文件的inode保持不变,程序依旧能往该文件写入日志。

2. 使用logrotate

logrotate 是一个用于管理日志文件的工具,它能够自动对日志文件进行分割、压缩和删除等操作。

配置logrotate

先创建一个 logrotate 的配置文件,例如 /etc/logrotate.d/a_log,内容如下:

/path/to/123.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 640 yourusername yourgroupname
    sharedscripts
    postrotate
        # 如果你的程序需要重新加载日志文件描述符,可以在这里添加相应的命令
        # 例如,使用 kill -HUP <pid> 来通知程序重新加载日志文件描述符
    endscript
}
配置说明
  • daily:每天对日志文件进行分割。
  • missingok:若日志文件不存在,不报错。
  • rotate 7:保留最近7天的日志文件。
  • compress:对旧的日志文件进行压缩。
  • delaycompress:延迟压缩上一次分割的日志文件。
  • notifempty:若日志文件为空,不进行分割。
  • create 640 yourusername yourgroupname:分割后创建新的日志文件,并设置权限和所有者。
  • sharedscripts:在所有日志文件都处理完毕后执行 postrotate 脚本。
  • postrotate:在日志文件分割完成后执行的脚本,可用于通知程序重新加载日志文件描述符。
手动执行logrotate

配置完成后,可手动执行 logrotate 来测试配置是否生效:

logrotate -f /etc/logrotate.d/a_log

3. 使用split命令分割日志

可以使用 split 命令对日志文件进行分割:

split -b 10M 123.log 123.log.

此命令会把 123.log 文件分割成每个大小为10MB的小文件,文件名以 123.log. 开头。分割完成后,可手动清空 123.log 文件:

cp /dev/null 123.log

这样程序就会继续往新的 123.log 文件写入日志。

相关文章:

  • 简单c语言编程
  • 数字化攻防战场的进化论:红蓝对抗训练如何重塑网络安全范式
  • debain12.9使用gpustack部署音频模型
  • DeepSeek底层揭秘——GEMM
  • iPhone 16 Plus :凉凉了
  • 初级:I/O与NIO面试题深度剖析
  • 两周实训成果:哪吒主题网页项目实战
  • Spring Boot整合Activiti工作流详解
  • 嵌入式 python 安装
  • 基于Flask的通用登录注册模块,并代理跳转到目标网址
  • 大模型——极简LangChain智能体开发入门指南
  • WHAM 人体3d重建部署笔记 vitpose
  • Python从入门到精通2:SQLite数据库(FastAPI + SQLite全流程开发指南)
  • AI广告新时代:DeepBI如何重塑亚马逊广告投放逻辑
  • 建造者模式的优点及其在优秀框架中的实现案例
  • Jsoup解析时如何处理异常?
  • ngx_http_index_loc_conf_t
  • Elasticsearch 入门
  • Python中的集合(set)
  • 勿看 计算机操作系统——第三节堆栈的使用
  • 企业网络营销青岛/优化神马排名软件
  • 鞍山公司网站建设/公司网站建设需要注意什么
  • 做瑜伽网站/建站网站关键词优化
  • 企业门户网站建设特色/三只松鼠有趣的软文
  • 深圳做网站-信科网络/广告联盟app下载官网
  • 如何进行一个网站建设/建立企业网站步骤