如何在Unix中为shell脚本锁定目录[重复]
Posted
技术标签:
【中文标题】如何在Unix中为shell脚本锁定目录[重复]【英文标题】:How to lock a directory in unix for the shell script [duplicate] 【发布时间】:2019-08-28 00:07:39 【问题描述】:我需要根据以下条件删除目录 D 的内容
-
获取目录D的已用空间。
如果已用空间超过阈值,则根据上次修改时间删除目录内容(使用 find mtime)
已经为它写了一个shell脚本(clearSpace.sh),但问题是脚本可以被多个进程同时调用。
我希望步骤 1 和 2 是原子的,以便获得一致的结果。
有没有办法让我首先在目录 D 上获得“锁定”并执行 clearSpace.sh 然后给锁定?基于权限的锁定不是一种选择
【问题讨论】:
您可以使用lock file. 【参考方案1】:我们建议不要锁定存储或任何其他操作系统资源。副作用可能是毁灭性的。并且不相关。
操作系统的职责是同步、分发和管理资源。
资源锁定是内核级编程。最好不要到那里。操作系统脚本工具中没有锁定功能是有原因的。
您可以实现脚本访问锁定。使用 lock.id 文件表示脚本正在运行。
如果 lock.id 存在则禁止脚本运行。
并在脚本操作完成后移除 lock.id 文件。 我们建议您将脚本阈值更改为更加灵活和宽容。
【讨论】:
以上是关于如何在Unix中为shell脚本锁定目录[重复]的主要内容,如果未能解决你的问题,请参考以下文章