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)

У чому проблема і як я можу її виправити?


і vim працює добре ...
Леон,

Відповіді:


17

Про цю проблему повідомляється з 2009 року (google для 'gedit virtualbox'). Жахливо, що для цього ще немає виправлень. Ні VirtualBox, ні розробники Gedit не бажають брати на себе відповідальність за це, а натомість вміють вказувати пальцями один на одного більше трьох років.

Ви можете встановити налаштування редактора на "Створити резервну копію", а потім зберегти двічі. Неймовірно болісно, ​​але це працює.

Деякі інші редактори не повідомлять про проблему. Однак, коли я тестував Кейт і нано, наприклад, ті просто мовчки видаляли файл під час кожного іншого збереження. Це навіть гірше, ніж ситуація в гедіті ...


2
Було б корисно, якщо ви включили посилання на звіт про помилки за 2009 рік; це може допомогти іншим відстежувати проблему.
Jasonwryan

Будь ласка, включіть у свою відповідь: сайт - це вікі ...
jasonwryan


2
Привітання з майбутнього. "Понад три роки" зараз перетворилося на "Понад вісім років" . Це все ще проблема.
труба

так.....? У нас є рішення чи щось таке?
Мохд Абдул Муджіб

6

"Текстовий файл зайнятий" тут може бути заплутаним: мова йде не про текстові файли, а про виконувані файли. Виконавчі файли називаються текстовими файлами, оскільки… гул, насправді, я не знаю чому .

Повідомлення насправді означає, що "цей файл заблоковано іншою програмою, яка його використовує, і не може дозволити його змінювати під носом, тому ви не можете писати на нього". Це повідомлення незвично бачити текстовий файл: системи Unix, як правило, хмуряться на обов'язкові блокування файлів, і програма не може застосувати інші програми для зміни файлу. (У Unix є дорадчі блокування: вони можуть бути використані для синхронізації одночасного доступу до файлу за допомогою співпрацюючих програм.) Найпоширеніша обставина, коли ви побачите "текстовий файл зайнятий" ( ETXTBUSY), якщо ви спробуєте змінити виконуваний виконуваний файл: ядро блокує його. Іншою можливістю є змонтований образ диска , знову заблокований ядром.

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


4
Спасибі. Я на 100% впевнений, що файл не налаштований у Windows, а також жодна інша програма не використовує його. Я можу відкрити його за допомогою OpenOffice, і тому я впевнений, що його не відкривають інші програми. Врятувати її не може лише гедіт.
користувач654019

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_name_name та збережіть його. ps Я не зміг знайти іншого вирішення цього питання. ви працювали

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.