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

如何在RHEL7中持续将一个文件的新增内容追加到另一个文件?

如何在RHEL7中持续将一个文件的新增内容追加到另一个文件?

嗨,这个需求在Linux环境里真的挺常见的,用系统自带的命令就能轻松解决,我给你分几种场景来说明:

最直接的实时跟踪追加

打开终端,直接运行下面的命令就行:

tail -f log.log >> historical_log.log
  • tail -f:这个参数会实时盯着log.log的新增内容,一有新行就输出
  • >>:这是追加重定向符号,能把输出的内容加到historical_log.log末尾,不会覆盖文件里原有的内容(如果用>的话就会覆盖,千万别搞混了)

如果你想让这个命令在后台持续运行,就算关闭终端也不中断,可以用nohup配合:

nohup tail -f log.log >> historical_log.log 2>&1 &
  • nohup:让进程脱离终端控制,退出终端后依然能继续运行
  • 2>&1:把命令的错误输出也重定向到日志文件里,避免遗漏报错信息
  • 最后的&:把进程放到后台运行

应对日志文件被轮换的情况

如果你的log.log会被日志轮换工具(比如logrotate)定期重命名或重建,普通的tail -f会因为文件句柄失效而停止跟踪。这时候换成大写的-F参数就可以解决:

tail -F log.log >> historical_log.log

-F会自动检测文件是否被替换,一旦发现原文件不存在了,会重新尝试打开同名的新文件,完美适配日志轮换的场景。

长期运行的进阶方案

如果需要这个跟踪任务长期稳定运行(比如开机自动启动),可以把它做成systemd服务:

  1. 创建服务文件/etc/systemd/system/log-forward.service,内容如下:
[Unit]
Description=Forward log.log to historical_log.log
After=network.target

[Service]
ExecStart=/usr/bin/tail -F /path/to/log.log >> /path/to/historical_log.log 2>&1
Restart=always
User=your_username

[Install]
WantedBy=multi-user.target
  1. 替换上面的/path/to/为实际的文件路径,your_username为运行该服务的用户
  2. 启动并启用服务:
sudo systemctl daemon-reload
sudo systemctl start log-forward.service
sudo systemctl enable log-forward.service

这样系统启动时这个任务就会自动运行,就算进程意外退出也会自动重启,非常稳定。

备注:内容来源于stack exchange,提问作者Behnamkvl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 14:58:07