Gedit nie zapisze pliku w udziale VirtualBox: plik tekstowy zajęty

29

Mam plik tekstowy, który mogę zmienić za pomocą innych aplikacji (na przykład openoffice). Ale kiedy próbuję go zmienić i zapisać za pomocą gedit, pojawia się błąd z gedit:

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

zezwolenie na BuildNotes.txt jest następujące:

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

a identyfikator użytkownika to:

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)

Na czym polega problem i jak mogę go naprawić?

użytkownik654019
źródło
i vim działa dobrze ...
Leon

Odpowiedzi:

17

Ten problem został zgłoszony od 2009 r. (Google dla „gedit virtualbox”). To okropne, że nie ma jeszcze poprawki. Ani VirtualBox, ani programiści Gedit nie są skłonni do wzięcia za to odpowiedzialności, a zamiast tego są zadowoleni, że mogą wskazywać na siebie przez ponad trzy lata.

Możesz ustawić preferencje edytora na „Utwórz kopię zapasową”, a następnie zapisać dwa razy. Niesamowicie bolesne, ale działa.

Niektórzy inni redaktorzy nie zgłaszają problemu. Jednak na przykład, gdy testowałem Kate i nano, po prostu dyskretnie usuwali plik przy każdym innym zapisie. To nawet gorsze niż sytuacja GEDIT ...

David
źródło
2
Przydałoby się link do raportu o błędach w 2009 roku; może pomóc innym śledzić problem.
jasonwryan
Podaj w odpowiedzi: strona jest wiki ...
jasonwryan,
2
Pozdrowienia z przyszłości. „Ponad trzy lata” zmieniło się w „Ponad osiem lat” . To wciąż problem.
rura
więc.....? Czy mamy rozwiązanie czy coś takiego?
Mohd Abdul Mujib
6

„Plik tekstowy zajęty” może być mylący: nie dotyczy to plików tekstowych, ale plików wykonywalnych. Pliki wykonywalne nazywane są plikami tekstowymi, ponieważ… szum, właściwie nie wiem dlaczego .

Wiadomość naprawdę oznacza, że ​​„ten plik jest zablokowany przez inny program, który go używa i nie może pozwolić na modyfikację pod nosem, więc nie można do niego pisać”. plik tekstowy: systemy uniksowe zwykle marszczą brwi w związku z obowiązkowymi blokadami plików, a aplikacje nie mogą blokować innych przed modyfikowaniem pliku. (Unix ma blokady doradcze: można ich używać do synchronizowania równoczesnego dostępu do pliku przez współpracujące programy). Najczęstszą okolicznością, gdy zobaczysz komunikat „plik tekstowy jest zajęty” ( ETXTBUSY), jest próba zmodyfikowania uruchomionego pliku wykonywalnego: jądro blokuje to. Inną możliwością jest zamontowanie obrazu dysku , ponownie zablokowanego przez jądro.

W twoim przypadku, biorąc pod uwagę lokalizację pliku /media/sf_Ubuntui własność grupy vboxsf, domyślam się, że plik, który znajduje się w systemie plików do udostępniania plików VirtualBox, jest zablokowany w systemie operacyjnym hosta. Przypuszczalnie hostem jest komputer z systemem Windows, a plik jest otwarty w edytorze. Musisz zapisać plik na hoście, aby móc zapisać w edytorze na maszynie wirtualnej.

Gilles „SO- przestań być zły”
źródło
4
dzięki. Jestem w 100% pewien, że plik nie jest oprn w systemie Windows i żadna inna aplikacja go nie używa. Mogę go otworzyć za pomocą OpenOffice i dlatego jestem pewien, że nie jest otwierany przez inne aplikacje. Tylko gedit nie może go zapisać.
user654019,
2
Mam ten sam problem. każdy program w systemie gościa działa świetnie, ale gedit, coś jest nie tak.
GlassGhost
2

Sprawdź, lsofczy plik jest otwarty przez inną aplikację

lsof /media/sf_Ubuntu/BuildNotes.txt

Lub użyj fuser:

fuser -km /media/sf_Ubuntu/BuildNotes.txt
Pankaj Sain
źródło
1

To, co mnie naprawiło (nadal trochę irytujące, ale działa) i dotyczy gedit, to:

edycja - preferencje - edytor Zaznacz pole „Utwórz kopię zapasową”

Podczas zapisywania od teraz zapisz plik raz, zignoruj ​​błąd, zapisz ponownie. działa za każdym razem.

Martin Levasseur
źródło
W 2019 r. Ten błąd nadal występuje. To obejście działa.
David
0

używając terminalu linux, spróbuj edytować plik używając vi nazwa_pliku i zapisz go. ps Nie mogłem znaleźć innego rozwiązania tego problemu. vi działało

Hamsavardhini
źródło