sed命令无法删除文件中的行

时间:2016-11-22 10:22:39

标签: shell sed

我的文件包含以下行

line1
line2
line3
line4
line5
line6
line7
line8
line9

当5个进程同时运行并使用sed命令在上述文件中删除一行时,有些行不会被删除。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

哦,sed不会失败,但并发访问会给你带来问题。这是场景(我猜)。

  • 会话A和B尝试运行您的sed命令。
  • 读取文件
  • B读取文件
  • 完成并写入文件
  • B写文件

结果:A的更改将丢失。

你应该怎么做?使用一些锁来保护并发访问。您可以使用flock命令。

 (
     flock -n 9 || exit 1
     # Your 'sed' command if script can access file
 ) 9>/var/lock/mylockfile