我最近遇到了这个问题:
我编写了一个 RoR 部署脚本,这是一个标准的 bash 脚本,用于检查目录、克隆代码并运行一些命令。在开始修改文件系统之前,它会创建(使用“touch”)一个文件(名为 deploy.lock),脚本会检查该文件是否存在,以便部署脚本的两个实例不会同时运行。它在最后一步删除该文件,以确保可以再次运行脚本。
我正在使用调用脚本
ssh [email protected] -tt /home/user/scripts/deploy.sh
但是,如果我已在另一个 SSH 会话中登录到服务器并尝试运行部署两次,则第二次(以及后续)运行将失败,并抱怨 deploy.lock 文件存在。如果我从第二个 SSH 会话检查该文件(使用 ls),则不会列出该文件,并且在下次尝试运行部署时,不会发生此类问题(未检测到 deploy.lock 文件)。
为什么会发生这种情况?