sed -i 修改文件的坑

文章讲述了使用sed-i修改线上日志可能导致的问题,即日志追加失败,因为sed会破坏硬链接并创建备份文件。作者提供了查找和恢复未链接打开文件的方法,以及避免此类问题的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 问题描述

开发修改线上日志文件xxx.log,该文件由tomcat实时在写入,执行:

$ sudo sed -i 's/十一月/Nov/g' xxx.log

这行脚本的目的是将日志中的“十一月”替换为“Nov”,执行结束后导致java应用没有再持续写追加任何日志。

2 What happened

2.1 sed in place edit原理

查看sed manpage:

$ man sed

-i[SUFFIX], --in-place[=SUFFIX]

  edit  files in place (makes backup if extension supplied).  The default operation mode is to break

  symbolic and hard links.  This can be changed with --follow-symlinks and --copy.

从中可以得知 sed -i 命令会破坏硬链接和软链接,可以自己测试一下:

$ cat f.txt

aaaaabbbbbb

$ stat f.txt

  File: `f.txt'

  Size: 12         Blocks: 8         

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值