You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下文件行数超过100行时执行文件轮转的适用命令有哪些?

Linux下按行数阈值实现文件自动轮转的方案

方案1:logrotate(优先推荐,适合自动轮转场景)

logrotate是Linux系统默认预装的日志轮转工具,原生支持按行数阈值触发轮转,无需额外编写监控脚本,适合长期自动运行的场景。

配置示例

你可以在/etc/logrotate.d/目录下新建对应配置文件(比如命名为custom_log),填入以下内容:

/path/to/your/target_file {
    maxlines 100
    rotate 10
    copytruncate
    missingok
    notifempty
    compress
}

参数说明:

  • maxlines 100:核心配置,只要文件行数超过100就触发轮转
  • rotate 10:最多保留10个历史轮转文件
  • copytruncate:如果目标文件正在被进程持续写入,用该参数避免文件句柄失效
  • compress:自动压缩历史轮转文件,节省空间
  • missingok:文件不存在也不报错
  • notifempty:文件为空时不轮转

生效与测试

  • 执行logrotate -d /etc/logrotate.d/custom_log可进行空运行测试,验证配置是否符合预期
  • 执行logrotate /etc/logrotate.d/custom_log可手动触发一次轮转
  • 系统默认会通过定时任务周期性执行logrotate,无需额外设置即可实现自动监控轮转

方案2:split(适合静态文件/流处理场景)

你已知的split命令本身就支持按行数分割,无需其他参数,适合手动处理已有文件或者管道实时流的场景:

  • 处理已有静态文件,按每100行分割:
    split -l 100 /path/to/input_file split_output_
    生成的文件会以split_output_aa、split_output_ab的命名规则依次排序
  • 处理实时程序输出流,按每100行分割存储:
    your_running_program | split -l 100 - stream_output_

方案3:rotatelogs(适合实时流连续写入场景)

如果是需要持续接收程序输出、满100行就自动生成新文件,可以用rotatelogs工具:
your_running_program | rotatelogs -l 100 output_%Y%m%d_%H%M%S.log
该命令会自动给新生成的文件带上时间戳,避免文件名冲突。

场景选择建议

  • 后台自动监控已有文件的轮转需求,优先选logrotate
  • 一次性处理静态文件,选split即可
  • 实时程序输出的流分割场景,选rotatelogs或管道+split都可

内容的提问来源于stack exchange,提问作者Angela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:15:02