unix:我可以在不丢失条目的情况下并行写入同一个文件吗?

标签 unix logging parallel-processing

我编写了一个并行执行命令的脚本。我让他们都向同一个日志文件写入一个条目。顺序错误或条目是否交错都没有关系,但我注意到有些条目丢失了。我可能应该在写入之前锁定文件,但是,如果多个进程同时尝试写入文件,是否会导致条目丢失?

最佳答案

是的,如果不同进程独立打开并写入同一个文件,可能会导致重叠写入和丢失数据。发生这种情况是因为每个进程都将获得自己的文件指针,该指针仅通过本地写入前进。

除了锁定,更好的选择可能是在所有工作进程的祖先中打开日志文件一次,让它跨 fork() 继承,并由它们用于日志记录。这意味着将有一个共享文件指针,当任何进程写入新条目时该指针会前进。

关于unix:我可以在不丢失条目的情况下并行写入同一个文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15384331/

相关文章:

shell - 仅包含与递归差异中给定模式匹配的文件

linux - 无法从文件中仅 grep 10 位数字

java - 如何更改外部 jar 中的类的调试级别

c - 一种基于另一个变量对某个值执行 MPI 全部缩减的有效方法?

unix - 如何删除文件名单词前的数字

ruby-on-rails - 将调用者应用程序堆栈跟踪与每个 sql 查询一起记录

python - pandas read csv 在固定时间内使用定界符

python - 总共运行 N 个作业,其中 M 个作业随时并行运行

parallel-processing - Java8中Iterator和Spliterator的区别

shell - awk - 将相似的行收集在一行中