Isso funciona para mim, qual é a saída de strace ln -f -s /var/www/html/releases/build1390 app-current
?
Ah, como é um diretório, você precisa adicionar -n
para não cancelar a referência e isso deve resolver o problema. -f
é realmente mais uma conveniência, já que adicionar o -f faz com que ele seja desvinculado de qualquer maneira. Embora eu ache que provavelmente aconteceria algumas centenas de ms mais rápido em um sistema normalmente carregado.
Por exemplo, se arf já aponta para / home:
strace Com -n
:
strace ln -n -f -s / arf
...
symlink("/", "arf") = -1 EEXIST (File exists)
unlink("arf") = 0
symlink("/", "arf") = 0
strace Sem -n
:
strace ln -f -s / arf
...
write(2, "ln: "..., 4ln: ) = 4
write(2, "'arf/': cannot overwrite director"..., 34'arf/': cannot overwrite directory) = 34
write(2, "\n"..., 1) = 1
Portanto, sem o -n
arf ser desreferenciado, ln o tratará como se fosse realmente /
. Em seu exemplo específico, se não houver erro, provavelmente você criou um novo link simbólico dentro de /var/www/html/releases/build1390 app-current
e desejará limpá-lo.