2016-11-22 6 views
0

Meine Datei enthält unter Liniensed Befehl eine Zeile in der Datei löschen versagt

line1 
line2 
line3 
line4 
line5 
line6 
line7 
line8 
line9 

wenn 5 Prozesse gleichzeitig ausgeführt werden und jeweils eine Zeile in der obigen Datei mit sed Befehl löschen, werden einige Male Linien nicht immer gelöscht.

Wie kann ich dieses Problem beheben?

+0

Wie rufen Sie 'sed' auf, um 5 Mal parallel zu laufen? Mit 'parallel' Befehl? – Inian

+0

sed Befehl ist in einem Skript und ich führe dieses Skript in 5 Sitzungen. – VSP

+0

Gleichzeitiger Dateizugriff kann schwierig sein, gibt es überhaupt keinen Weg dazu? Verwenden Sie einen Sperrmechanismus für den sed-Zugriff jedes Aufrufs auf die Datei. –

Antwort

0

Ohh, Sed scheitert nicht, aber gleichzeitiger Zugriff gibt Ihnen ein Problem. Hier ist das Szenario (ich denke).

  • Sitzung A und B versuchen, den Befehl sed auszuführen.
  • A lesen Sie die Datei
  • B die Datei
  • A und schreiben Sie die Datei

Ergebnis

  • B schreiben die Datei fertig lesen: Änderungen von A verloren.

    Was sollten Sie tun? Verwenden Sie eine Sperre, um den gleichzeitigen Zugriff zu schützen. Sie können den Befehl flock verwenden.

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