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ć?
Odpowiedzi:
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 ...
źródło
„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_Ubuntu
i własność grupyvboxsf
, 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.źródło
Sprawdź,
lsof
czy plik jest otwarty przez inną aplikacjęLub użyj
fuser
:źródło
Problem dotyczy zasadniczo glib i sposobu, w jaki zapisuje się go do pliku tymczasowego, a następnie zmienia nazwę. Błąd został zarejestrowany jako: https://bugzilla.gnome.org/show_bug.cgi?id=656225
źródło
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.
źródło
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
źródło