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

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

使用场景:

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 文件写入日志。


http://www.kler.cn/a/600824.html

相关文章:

  • PLC物联网网关是什么?PLC网关应用场景
  • 程序化广告行业(32/89):常见广告位类型深度剖析
  • 106.在 Vue3 中使用 OpenLayers 动态添加 Layer 到 LayerGroup,并动态删除
  • 第 5 章 | Solidity 合约中的整数溢出与精度陷阱全解析
  • 笔记整理三
  • 开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(五)
  • 最大连续子序列和(动态规划 -- 经典Kadane算法)
  • 可视化工程项目管理软件:让复杂工程数据一目了然
  • rabbitmq承接MES客户端服务器
  • sourcetree中的“master“,“origin/master“,“origin/HEAD“这三个图标都是什么意思?GIT 超详细➕通俗易懂版本
  • influxdb在centOS stream 9安装教程
  • 3、孪生网络/连体网络(Siamese Network)
  • <KeepAlive>和<keep-alive>有什么区别
  • 基于51单片机的多点位水位监测proteus仿真
  • Java学习总结-Stream流
  • 微信小程序中使用WebSocket通信
  • 使用Python爬虫获取1688商品(按图搜索)接口
  • 状态空间模型解析 (State-Space Model, SS)
  • 人工智能与区块链融合:开启数字信任新时代
  • (一)LeetCode热题100——哈希