Что происходит с символьной ссылкой, когда исходный файл заменяется?

У меня есть программное обеспечение обновления в/opt/minergate-cli. Я переименовал каталог minergate-cli к minergate-старому с командой mv, затем установил более новую версию программного обеспечения, дающего то же имя каталога.

При принятии у меня были старая программа и теперь новая программа тем же именем, при этом тот был "minergate", что происходит с какими-либо символьными ссылками, указывающими на программу minergate?

Они указывают на исходную программу, живущую в minergate-старом, или ссылка перемещалась в новую программу minergate.cli?

3
задан 24 October 2018 в 04:47

2 ответа

После того как Вы перемещаете файл, на который указывает символьная ссылка, символьная ссылка повреждается, иначе подвешивая символьную ссылку. Необходимо удалить его и создать новый. См. также https://unix.stackexchange.com/a/18365/85039

2
ответ дан 1 December 2019 в 15:33

Символьная ссылка просто содержит название файла, на который это указывает. (подскажите, сделайте ls -l symlink и отметьте его размер файла). Если Вы удалите конечный файл, но затем создадите новый файл с тем же именем, то символьная ссылка будет счастливо продолжать работать, относясь к новому содержанию файла:

$ echo "first file" > file
$ ln -s file symlink
$ ls -l symlink
lrwxrwxrwx 1 jackman jackman 4 Oct 23 23:33 symlink -> file
# ...........................^=size ...................^^^^ target is 4 chars
$ cat symlink
first file
$ mv file file.old
$ echo "this is the second" > file
$ cat symlink
this is the second

Можно быть, думают о "твердой" ссылке, которая относится к inode конечного файла:

$ echo "first line" > file
$ ln file hardlink
$ ls -li hardlink file
1078415 -rw-r--r-- 2 jackman jackman 11 Oct 23 23:38 file
1078415 -rw-r--r-- 2 jackman jackman 11 Oct 23 23:38 hardlink
$ cat hardlink
first line
$ mv file file.old
$ echo "this is the new contents" > file
$ cat hardlink
first line
$ ls -li hardlink file file.old
1059446 -rw-r--r-- 1 jackman jackman 25 Oct 23 23:39 file
1078415 -rw-r--r-- 2 jackman jackman 11 Oct 23 23:38 file.old
1078415 -rw-r--r-- 2 jackman jackman 11 Oct 23 23:38 hardlink

здесь hardlink тот же файл как оригинал file файл.

3
ответ дан 1 December 2019 в 15:33

Другие вопросы по тегам:

Похожие вопросы: