linux - 一次运行脚本两次
问题描述
我正在制作一个简单的脚本来提高我的工作团队的效率。该脚本只是搜索用户作为参数提供的文件。
./check_file test_file.xml
我只使用ls
和cp
命令,没有日志或临时文件。
我的问题是:我应该放置一个 .lock 文件以确保脚本一次只运行一次,还是可以避免这种控制?
通常我会创建一个锁定文件,因为我的脚本会写入临时文件,如果两个用户同时运行该脚本,它就会爆炸。
谢谢!
解决方案
一般来说,没有。我建议尽可能避免使用临时文件,而更喜欢管道。但是,我怀疑是否总是可以避免临时文件,所以当我不得不时,我会$$
在文件名中使用(当前进程 ID 或 PID)。因此,如果您将/tmp/check_file.tmp
其用作临时文件名,请改用/tmp/check_file.$$.tmp
- ,然后可以同时运行两个进程,每个进程都有自己的 PID,并且不会重叠。
稍微高级一点的是也可以${TMP:-/tmp}
用作临时目录,而不仅仅是/tmp
- 这样用户可以为每次运行指定不同的目录,从而也避免任何重叠。
推荐阅读
- entity-framework - 实体类型 States 不是实体框架中当前上下文模型的一部分
- docker - Jenkins 在 Windows 10 Pro 上的 docker 内。构建失败 - 找不到 docker-compose
- android - 列表视图滚动更改项目视图的背景颜色(简单适配器)
- python - 使用 copy() 后的 SettingWithCopyWarning
- python - 负字符串索引与“查找”不成功的结果
- javascript - 在制表符中显示最后一组
- python - 使用带有 IntervalIndex 的 pandas.cut 后如何重命名类别?
- firebase - 如何编写来自 Firebase 的数据以快速存储?
- firebase - 如何在 firebase 数据库中使用 kotlin 协程
- java - Firebase onDataChange - 空对象引用