Ich habe eine Textdatei, die ich mit anderen Anwendungen (zum Beispiel openoffice
) ändern kann . Aber wenn ich versuche, es zu ändern und zu speichern, erhalte gedit
ich eine Fehlermeldung von gedit
:
Could not save the file /media/sf_Ubuntu/BuildNotes.txt.
Unexpected error: Error renaming temporary file: Text file busy
Die Berechtigung von BuildNotes.txt lautet wie folgt:
-rwxrwx--- 1 root vboxsf 839 2012-10-26 12:08 BuildNotes.txt
und Benutzer-ID ist:
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)
Was ist das Problem und wie kann ich es beheben?
Antworten:
Dieses Problem wurde seit 2009 gemeldet (google for 'gedit virtualbox'). Es ist schrecklich, dass es noch keine Lösung dafür gibt. Weder VirtualBox noch Gedit-Entwickler sind bereit, Verantwortung dafür zu übernehmen, sondern geben sich damit zufrieden, seit über drei Jahren die Finger aufeinander zu richten.
Sie können Ihre Editoreinstellungen auf "Backup erstellen" setzen und dann zweimal speichern. Unglaublich schmerzhaft, aber es funktioniert.
Einige andere Editoren melden das Problem nicht. Als ich zum Beispiel Kate und Nano testete, löschten diese die Datei bei jedem weiteren Speichervorgang. Das ist noch schlimmer als die gedit Situation ...
quelle
"Textdatei ausgelastet" kann hier verwirrend sein: Es geht eigentlich nicht um Textdateien, sondern um ausführbare Dateien. Ausführbare Dateien werden als Textdateien bezeichnet, weil… ich eigentlich nicht weiß, warum .
Was die Meldung wirklich bedeutet, ist: "Diese Datei ist von einem anderen Programm gesperrt, das sie verwendet, und kann nicht unter der Nase geändert werden, sodass Sie nicht darauf schreiben können." Textdatei: Unix-Systeme sehen im Allgemeinen keine verbindlichen Sperren für Dateien vor, und es gibt keine Möglichkeit für Anwendungen, andere daran zu hindern, eine Datei zu ändern. (Unix hat Hinweissperren: Sie können verwendet werden, um gleichzeitige Zugriffe auf eine Datei durch kooperierende Programme zu synchronisieren.) Der häufigste Fall, in dem "text file busy" (
ETXTBUSY
) angezeigt wird, ist, wenn Sie versuchen, eine ausgeführte ausführbare Datei zu ändern: Kernel sperrt es. Eine andere Möglichkeit ist ein Disk-Image, das gemountet und vom Kernel wieder gesperrt wird.In Ihrem Fall ist angesichts des Speicherorts der Datei
/media/sf_Ubuntu
und des Eigentums an der Gruppevboxsf
die Datei, die sich auf einem VirtualBox-Dateifreigabedateisystem befindet, im Host-Betriebssystem gesperrt. Vermutlich ist der Host ein Windows-Rechner und Sie haben die Datei dort auch in einem Editor geöffnet. Sie müssen die Datei auf dem Host schließen, bevor Sie sie im Editor in der VM speichern können.quelle
Prüfen Sie mit,
lsof
ob die Datei von einer anderen Anwendung geöffnet wurdeOder benutze
fuser
:quelle
Das Problem liegt grundsätzlich bei glib und der Art und Weise, wie es in einer temporären Datei gespeichert und dann umbenannt wird. Der Fehler wurde aufgezeichnet als: https://bugzilla.gnome.org/show_bug.cgi?id=656225
quelle
Was es für mich behoben hat (immer noch ein bisschen nervig, aber funktioniert) und auf gedit zutrifft, ist:
Bearbeiten - Einstellungen - Editor Aktivieren Sie "Sicherungskopie erstellen"
Speichern Sie die Datei ab jetzt einmal, ignorieren Sie den Fehler und speichern Sie sie erneut. funktioniert jedes mal.
quelle
Versuchen Sie mit dem Linux-Terminal, die Datei mit vi dateiname zu bearbeiten und zu speichern. ps Ich konnte keine andere Lösung für dieses Problem finden. vi arbeitete
quelle