Isso funciona para mim, qual é o resultado strace ln -f -s /var/www/html/releases/build1390 app-current
?
Ah, como é um diretório que você precisa adicionar -n
sem nenhuma referência e isso deve resolver o problema. -f
é realmente mais uma conveniência, pois adicionar o -f faz com que ele desvincule de qualquer maneira. Embora eu ache que isso provavelmente aconteceria algumas centenas de ms mais rápido em um sistema normalmente carregado.
Por exemplo, se o 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 é desreferenciado, então o trata como se fosse realmente /
. No seu exemplo em particular, se não houver erro, acho que você provavelmente criou um novo link simbólico /var/www/html/releases/build1390 app-current
e desejará limpá-lo.