首页 > 解决方案 > 一次运行脚本两次

问题描述

我正在制作一个简单的脚本来提高我的工作团队的效率。该脚本只是搜索用户作为参数提供的文件。

./check_file test_file.xml

我只使用lscp命令,没有日志或临时文件。

我的问题是:我应该放置一个 .lock 文件以确保脚本一次只运行一次,还是可以避免这种控制?

通常我会创建一个锁定文件,因为我的脚本会写入临时文件,如果两个用户同时运行该脚本,它就会爆炸。

谢谢!

标签: linuxbash

解决方案


一般来说,没有。我建议尽可能避免使用临时文件,而更喜欢管道。但是,我怀疑是否总是可以避免临时文件,所以当我不得不时,我会$$在文件名中使用(当前进程 ID 或 PID)。因此,如果您将/tmp/check_file.tmp其用作临时文件名,请改用/tmp/check_file.$$.tmp- ,然后可以同时运行两个进程,每个进程都有自己的 PID,并且不会重叠。

稍微高级一点的是也可以${TMP:-/tmp}用作临时目录,而不仅仅是/tmp- 这样用户可以为每次运行指定不同的目录,从而也避免任何重叠。


推荐阅读