команда sed изменяет файл, в то время как другая команда sed изменяет его тоже - PullRequest
0 голосов
/ 26 сентября 2019

Мой вопрос вращается вокруг процесса, который я использую для обновления файла состояния.У меня запущен процесс, который выполняет простой

sed -i "s/info/newinfo/" file.txt

Но этот процесс может вызываться несколько раз.

Мой вопрос таков: если два процесса запускают команду sed для одновременного изменения файла, вызовет ли это проблему?

Я попытался проверить это, выполнив 2 команды водновременно делаю две разные модификации sed.Кажется, они работают нормально, но я не знаю, были ли они на самом деле одновременно или нет.Возможно, команда настолько быстра, что у нее не будет проблем с доступом для чтения и записи из двух разных процессов.

1 Ответ

1 голос
/ 26 сентября 2019

Хорошо, давайте покажем, с не очень большим файлом:

cd /tmp
seq 1000000 2000000  > mediumfile.txt
ls -hl mediumfile.txt 
-rw-r--r-- 1 user  user  7.7M Sep 26 16:53 host  file.txt
wc mediumfile.txt 
1000001 1000001 8000008 host  file.txt

Хорошо, в моем файле 7,7 МБ есть 1000 000 строк.

Если я уроню2 x 1001 строк одновременно с помощью двух отдельных ( stream ) процесса (с 1801000 по 1802000 и с 1803000 до 1804000).

sed '/1803000/,/1804000/d' -i mediumfile.txt & \
    sed '/1801000/,/1802000/d' -i mediumfile.txt ;wait
[1] 30727
[1]+  Done                    sed '/1803000/,/1804000/d' -i mediumfile.txt

wc -l mediumfile.txt 
999000 host  file.txt

Также есть 1k строкмного!

grep '180[13]400' mediumfile.txt
1803400

Так оно и есть.

...