2016-11-22 72 views
0

我的文件包含以下行sed命令失败删除线在文件

line1 
line2 
line3 
line4 
line5 
line6 
line7 
line8 
line9 

当5个进程同时运行并使用sed命令删除每一个线在上述文件中,有时线没有获得删除。

我该如何解决这个问题?

+0

你如何调用'sed'并行运行5次?使用'parallel'命令? – Inian

+0

sed命令在脚本中,我在5个会话中运行该脚本。 – VSP

+0

并发文件访问可能比较棘手,是否绝对没有办法解决它?为每个调用对文件的sed访问使用锁定机制。 –

回答

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