Это работает для меня, что является выходом strace ln -f -s /var/www/html/releases/build1390 app-current
?
О, так как это каталог, который вы должны добавить -n
без разыменования, и это должно решить проблему. -f
это действительно больше удобства, так как добавление -f просто приводит к тому, что он в любом случае отсоединяется. Хотя я думаю, что это произойдет на несколько сотен мс быстрее в нормально загруженной системе.
Например, если arf уже указывает на / home:
Strace С -n
:
strace ln -n -f -s / arf
...
symlink("/", "arf") = -1 EEXIST (File exists)
unlink("arf") = 0
symlink("/", "arf") = 0
Трассирование Без -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
Таким образом, без -n
arf разыменовывается, так что он обрабатывает его как arf, как если бы он был на самом деле /
. В вашем конкретном примере, если ошибки нет, я думаю, что вы, вероятно, создали новую символическую ссылку внутри /var/www/html/releases/build1390 app-current
и захотите ее исправить.