Gedit не сохранит файл на общем ресурсе VirtualBox: текстовый файл занят

29

У меня есть текстовый файл, который я могу изменить, используя другие приложения (например openoffice). Но когда я пытаюсь изменить и сохранить его с помощью gedit, я получаю сообщение об ошибке gedit:

Could not save the file /media/sf_Ubuntu/BuildNotes.txt.
Unexpected error: Error renaming temporary file: Text file busy

разрешение BuildNotes.txt выглядит следующим образом:

-rwxrwx--- 1 root vboxsf  839 2012-10-26 12:08 BuildNotes.txt

и идентификатор пользователя:

m@m-Linux:/media/sf_Ubuntu$ id
uid=1000(m) gid=1000(m) groups=4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare),1000(m),1001(vboxsf)

В чем проблема и как я могу это исправить?

user654019
источник
и Vim работает отлично ...
Леон

Ответы:

17

Эта проблема была зарегистрирована с 2009 года (Google для «Gedit Virtualbox»). Ужасно, что это еще не исправлено. Ни VirtualBox, ни разработчики Gedit не хотят брать на себя ответственность за это, и вместо этого довольствуются указывать друг на друга более трех лет.

Вы можете установить в настройках редактора значение «Создать резервную копию», а затем сохранить дважды. Невероятно больно, но это работает.

Некоторые другие редакторы не сообщат о проблеме. Однако, когда я тестировал, например, Kate и nano, они просто молча удаляли файл при каждом другом сохранении. Это даже хуже, чем ситуация с Gedit ...

Дэвид
источник
2
Было бы полезно, если бы вы включили ссылку на отчет об ошибках за 2009 год; это может помочь другим отследить проблему.
Джейсонвриан
Пожалуйста,
включите
2
Привет из будущего. «За три года» теперь превратилось в «За восемь лет» . Это все еще проблема.
труба
так.....? У нас есть решение или что-то?
Мохд Абдул Муджиб
6

«Текстовый файл занят» может сбивать с толку: речь идет не о текстовых файлах, а о исполняемых файлах. Исполняемые файлы называются текстовыми файлами, потому что… на самом деле, я не знаю почему .

На самом деле это сообщение означает «этот файл заблокирован другой программой, которая использует его и не может позволить ему изменить его под носом, поэтому вы не можете писать в него». Довольно необычно видеть это сообщение для Текстовый файл: Unix-системы, как правило, не одобряют обязательную блокировку файлов, и приложения не могут блокировать изменение файла другими пользователями (Unix имеет консультативные блокировки: их можно использовать для синхронизации одновременного доступа к файлу с помощью взаимодействующих программ.) Наиболее распространенное обстоятельство, когда вы видите «текстовый файл занят» ( ETXTBUSY), - это если вы пытаетесь изменить исполняемый файл: ядро блокирует это. Другая возможность - это смонтированный образ диска , снова заблокированный ядром.

В вашем случае, учитывая местоположение файла /media/sf_Ubuntuи права собственности на группу vboxsf, я предполагаю, что файл, находящийся в файловой системе общего доступа к файлам VirtualBox, заблокирован в операционной системе хоста. Предположительно, хост является Windows-машиной, и у вас также есть файл, открытый в редакторе. Вам нужно закрыть файл на хосте, прежде чем вы сможете сохранить его в редакторе на виртуальной машине.

Жиль "ТАК - перестань быть злым"
источник
4
Спасибо. Я на 100% уверен, что в Windows нет файла oprn, и никакое другое приложение не использует его. Я могу открыть его с помощью OpenOffice и, следовательно, я уверен, что он не открывается другими приложениями. Только Гедит не может его спасти.
user654019
2
У меня та же проблема. каждая программа в гостевой ОС работает отлично, но Gedit, что-то не так.
GlassGhost
2

Проверьте, lsofоткрыт ли файл другим приложением

lsof /media/sf_Ubuntu/BuildNotes.txt

Или используйте fuser:

fuser -km /media/sf_Ubuntu/BuildNotes.txt
Панкай Саин
источник
1

Что исправило это для меня (все еще немного раздражает, но работает), и применимо к gedit:

редактировать - настройки - редактор Поставьте галочку на "Создать резервную копию"

При сохранении отныне сохраните файл один раз, проигнорируйте ошибку, сохраните снова. работает каждый раз.

Мартин Левассер
источник
В 2019 году эта ошибка все еще происходит. Этот обходной путь работает.
Дэвид
0

используя терминал linux, попробуйте отредактировать файл, используя vi file_name, и сохраните его. PS Я не мог найти другое решение для этой проблемы. Ви работал

Hamsavardhini
источник