【问题标题】:How to lock a directory in unix for the shell script [duplicate]如何在Unix中为shell脚本锁定目录[重复]
【发布时间】:2019-08-28 00:07:39
【问题描述】:

我需要根据以下条件删除目录 D 的内容

  1. 获取目录D的已用空间。
  2. 如果已用空间超过阈值,则根据上次修改时间删除目录内容(使用 find mtime)

已经为它写了一个shell脚本(clearSpace.sh),但问题是脚本可以被多个进程同时调用。

我希望步骤 1 和 2 是原子的,以便获得一致的结果。

有没有办法让我首先在目录 D 上获得“锁定”并执行 clearSpace.sh 然后给锁定?基于权限的锁定不是一种选择

【问题讨论】:

标签: bash unix


【解决方案1】:

我们建议不要锁定存储或任何其他操作系统资源。副作用可能是毁灭性的。并且不相关。

操作系统的职责是同步、分发和管理资源。

资源锁定是内核级编程。最好不要到那里。操作系统脚本工具中没有锁定功能是有原因的。

您可以实现脚本访问锁定。使用 lock.id 文件表示脚本正在运行。

如果 lock.id 存在则禁止脚本运行。

并在脚本操作完成后移除 lock.id 文件。 我们建议您将脚本阈值更改为更加灵活和宽容。

【讨论】:

    猜你喜欢
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2021-02-08
    • 2017-08-11
    • 2017-04-09
    • 1970-01-01
    相关资源
    最近更新 更多