.nfs0000... файлы продолжают появляться и исчезать при использовании Mercurial

В последнее время, похоже, что-то случилось на моей машине, что раздражает больше, чем что-либо еще: каждый раз, когда я просматриваю каталог Mercurial для изменений, он говорит мне о двух .nfs#### файлы, которые затем немедленно исчезают. #### кажется, увеличивается каждый раз, когда они мерцают назад.

Мой компьютер сходит с ума? Это Mercurial связано? С файловой системой (это сетевой диск)?

$ hg st
? .nfs000000001b1d062600000a43
? .nfs000000001b1d085a00000a44
$ ls -lhtrA
total 1.7M
drwxrwxr-x 5 nick    nick    4.0K Sep  2 14:34 media/
drwxrwxr-x 6 nick    nick    4.0K Sep 19 17:07 venv/
drwxrwxr-x 7 nick    nick    4.0K Sep 19 18:55 lab_web/
drwxrwxr-x 8 nick    nick    4.0K Sep 19 20:15 templates/
drwxrwxr-x 5 nick    nick    4.0K Sep 20 17:44 .hg/
-rw-rw-r-- 1 nick    nick     252 Jul 23 17:21 manage.py
-rw-rw-r-- 1 nick    nick     177 Sep 19 17:07 requirements.txt
-rw-r--r-- 1 nick    nick    1.7M Sep 19 19:46 lab_sqlite3.db
-rw-rw-r-- 1 nick    nick     141 Sep 19 20:26 debug_requirements.txt
-rw-rw-r-- 1 nick    nick     274 Sep 20 17:44 .hgignore
$ hg st
? .nfs000000001b1d062600000a47
? .nfs000000001b1d085a00000a48
$ hg st
? .nfs000000001b1d062600000a49
? .nfs000000001b1d085a00000a4a

1 ответ

Решение

.nfs* файлы связаны с NFS. Они появляются на NFS-сервере, когда файл удален, но все еще открыт клиентом. Сервер не должен удалять файл, потому что он все еще должен предоставить данные клиентам, у которых он открыт. С другой стороны, сервер должен удалить файл, потому что процесс, который удалил его, ожидает, что он больше не существует. Таким образом, сервер NFS переименовывает файл в имя, которое, мы надеемся, никого не волнует.

Бесполезно пытаться удалить их: вы удалите файл, который все еще открыт NFS-клиентом, поэтому сервер будет только создавать новый .nfs* файл для хранения данных.

В конце концов клиент закроет файлы и .nfs* помет исчезнет.

Вы можете указать Mercurial игнорировать эти файлы. в [ui] раздел вашего ~/.hgrc, добавьте строку ignore = ~/.hgignore.globalи создайте файл ~/.hgignore.global содержащий строку .nfs*,

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