> /users/erp/log/LOGMSG 每-6ren">
gpt4 book ai didi

linux - 使用 echo 从多个进程并行写入文件

转载 作者:IT王子 更新时间:2023-10-29 01:04:06 26 4
gpt4 key购买 nike

我在我们的 ERP 系统中编写了一个函数,它通过简单地将日志“回显”到日志文件来将日志写入服务器上的文件。

echo "SOME LOGDATA" >> /users/erp/log/LOGMSG

每次用户触发特定事件时,都会调用 LOG 函数。

如果 2 个用户同时触发 LOG 事件会怎样?

“echo”是否负责文件锁定?在我看来,必须由 linux 内核或 bash 负责,一个文件不是由 2 个命令行指令同时写入的。

我写了一个测试用例来强制这个条件(一秒内大约 1000 个 LOG 调用),看起来我的想法是正确的,但我不能确定,这些调用是在 bash 上同时执行的。

最佳答案

如解释here , 只有当写入的序列短于 PIPE_BUF 和 stdout 缓冲区的大小(很可能是 BUFSIZ)中较小的一个时,echo 才保证是原子的。

对于较长的序列,你需要加锁。使用可以使用lockfile-createlockfile-check

关于linux - 使用 echo 从多个进程并行写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33887938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com