【问题标题】:How to mv file without race conditions?如何在没有竞争条件的情况下 mv 文件?
【发布时间】:2013-12-23 04:26:54
【问题描述】:

我在使用 python 编写的应用程序重命名文件时遇到了争用情况。 具体问题如下:

应用程序将分派一个 csh 脚本到网格,它会在网格中运行并尝试将文件 A.run 重命名为 A.com

同时,当此作业通过应用程序终止时(其中一项功能是终止提交的作业),应用程序尝试将A.run 重命名为A.kil

但是,如果两个操作同时发生,我在重命名文件时会遇到竞争情况。我试图了解文件上的csh 脚本是否可以设置任何锁,以便在此期间根本不调用 kill 函数。

关于如何解决这个问题的任何想法?

【问题讨论】:

  • kill 函数实际上是做什么的?尽可能具体。
  • kill 函数为网格发出 kill 命令(bkill/qdel 取决于选择的网格),然后它将文件从 A.run 重命名为 A.kil
  • 假设你正在发送一个明智的信号,那么当你不想被杀死的时候就屏蔽掉这个信号。
  • 您能否详细说明“发送合理信号”是什么意思?谢谢
  • 我的意思是不能被阻止的,比如 SIGHUP 或 SIGINT。不是不能,比如 SIGKILL。

标签: python locking


【解决方案1】:

flock 命令(可作为 shell 命令和 python 函数使用)可以帮助您避免竞争条件。

【讨论】:

    猜你喜欢
    • 2023-02-09
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 2021-02-14
    • 2016-05-17
    • 2016-01-14
    • 2020-11-08
    • 2012-03-31
    相关资源
    最近更新 更多