Das funktioniert für mich, was ist die Ausgabe von strace ln -f -s /var/www/html/releases/build1390 app-current
?
Oh, da es sich um ein Verzeichnis handelt, das Sie -n
ohne Dereferenzierung hinzufügen müssen, sollte dies das Problem lösen. -f
ist wirklich bequemer, da das Hinzufügen von -f die Verknüpfung sowieso aufhebt. Obwohl ich denke, dass es auf einem normal geladenen System wahrscheinlich einige hundert ms schneller passieren würde.
Zum Beispiel, wenn arf bereits auf / home zeigt:
strace mit -n
:
strace ln -n -f -s / arf
...
symlink("/", "arf") = -1 EEXIST (File exists)
unlink("arf") = 0
symlink("/", "arf") = 0
strace Ohne -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
Also, ohne dass der -n
Arf dereferenziert wird, wird er als Arf behandelt, als ob er tatsächlich wäre /
. Wenn in Ihrem speziellen Beispiel kein Fehler vorliegt, haben Sie wahrscheinlich einen neuen symbolischen Link innerhalb von erstellt /var/www/html/releases/build1390 app-current
und möchten diesen bereinigen.