我的问题与我用来更新状态文件的过程有关。我正在运行一个简单的程序
sed -i "s/info/newinfo/" file.txt
但是此过程可以多次调用。
我的问题是,如果两个进程同时运行sed命令来修改文件,会不会引起问题?
我尝试通过同时在命令中运行2进行两次不同的sed修改来对此进行测试。它们似乎工作正常,但我不知道它们是否实际上同时运行。也许该命令是如此之快,以至于来自两个不同进程的读写访问不会有问题。
答案 0 :(得分:1)
好让我们展示一下,并显示一个不太大的文件:
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.7Mb文件中有1000k行。
如果我通过两个分开的(流)过程(从1801000到1802000和从1803000到1804000)同时丢掉2 x 1001行。
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
就是这样。