Почему у меня есть файл-призрак на моем сервере Ubuntu?
Я недавно сталкивался с этой проблемой:
Я написал скрипт развертывания RoR, стандартный скрипт bash, который проверяет каталоги, клонирует коды и запускает несколько команд. Прежде чем приступить к изменению файловой системы, он создает (используя "touch") файл (с именем deploy.lock), который проверяется на наличие сценарием, чтобы два экземпляра сценария развертывания не запускались одновременно. Он удаляет файл на последнем шаге, чтобы обеспечить возможность повторного запуска сценария.
Я вызываю скрипт используя
ssh user@server.example.com -tt /home/user/scripts/deploy.sh
Однако, если я уже вошел на сервер в другом сеансе SSH и попытался запустить развертывание дважды, второй (и последующий) запуск завершился неудачно, сообщив о существовании файла deploy.lock. Если я проверяю файл (используя ls) из второго сеанса SSH, то этот файл отсутствует в списке, и при следующей попытке запустить развертывание такой проблемы не возникает (файл deploy.lock не обнаружен).
Почему это происходит?