Неожиданная ошибка произошла ошибка при переименовании временного файла текстовый файл занят ubuntu

I have a text file that I can change using other applications (for example openoffice). But when I try to change and save it using gedit, I am getting error from gedit: Could not save the file /m...

I have a text file that I can change using other applications (for example openoffice). But when I try to change and save it using gedit, I am getting error from gedit:

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

the permission of BuildNotes.txt is as follow:

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

and user id is:

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)

What is the problem and how I can fix it?

Anthon's user avatar

Anthon

77k42 gold badges159 silver badges217 bronze badges

asked Oct 26, 2012 at 11:15

user654019's user avatar

3

This problem has been reported since 2009 (example [archived]). It is awful that there’s no fix for it yet. Neither VirtualBox nor Gedit developers are willing to take responsibility for it, and instead are content to point fingers at one another for over three years.

You can set your editor preferences to ‘Create a backup’ then save twice. Incredibly painful, but it works.

Some other editors won’t report the problem. However, when I tested Kate and nano, for example, those just silently deleted the file on every other save. That’s even worse than the gedit situation…

stackprotector's user avatar

answered Nov 8, 2012 at 1:50

David's user avatar

DavidDavid

2411 silver badge3 bronze badges

6

“Text file busy” can be confusing here: it isn’t actually about text files, but about executables. Executables are called text files because… hum, actually, I don’t know why.

What the message really means is “this file is locked by another program that is using it and can’t let it be modified under its nose, so you can’t write to it.” It is quite unusual to see this message for a text file: unix systems generally frown on mandatory locks on files, and there is no facility for applications to lock out others from modifying a file. (Unix has advisory locks: they can be used to synchronize concurrent accesses to a file by cooperating programs.) The most common circumstance when you’ll see “text file busy” (ETXTBUSY) is if you try to modify an executable that’s running: the kernel locks it. Another possibility is a disk image that is mounted, again locked by the kernel.

In your case, given the location of the file /media/sf_Ubuntu and the ownership to the group vboxsf, my guess is that the file, which is on a VirtualBox file sharing filesystem, is locked in the host operating system. Presumably the host is a Windows machine and you also have the file open in an editor there. You’ll need to close the file on the host before you can save in the editor in the VM.

Community's user avatar

answered Oct 26, 2012 at 23:30

Gilles 'SO- stop being evil''s user avatar

2

Check with lsof if the file is open by another application

lsof /media/sf_Ubuntu/BuildNotes.txt

Or use fuser:

fuser -km /media/sf_Ubuntu/BuildNotes.txt

Mat's user avatar

Mat

50.6k10 gold badges154 silver badges139 bronze badges

answered Oct 26, 2012 at 12:20

Pankaj Sain's user avatar

What fixed it for me (still a bit annoying but works), and is applicable to gedit, is to:

edit — preferences — editor
Put a check on «Create backup copy»

When saving from now on, save the file once, ignore the error, save again.
works every time.

answered Nov 12, 2013 at 15:21

Martin Levasseur's user avatar

1

using linux terminal, try editing the file using vi file_name and save it.
p.s I could not find another solution for this issue. vi worked

answered Sep 22, 2017 at 2:46

Hamsavardhini's user avatar

I have a text file that I can change using other applications (for example openoffice). But when I try to change and save it using gedit, I am getting error from gedit:

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

the permission of BuildNotes.txt is as follow:

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

and user id is:

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)

What is the problem and how I can fix it?

Anthon's user avatar

Anthon

77k42 gold badges159 silver badges217 bronze badges

asked Oct 26, 2012 at 11:15

user654019's user avatar

3

This problem has been reported since 2009 (example [archived]). It is awful that there’s no fix for it yet. Neither VirtualBox nor Gedit developers are willing to take responsibility for it, and instead are content to point fingers at one another for over three years.

You can set your editor preferences to ‘Create a backup’ then save twice. Incredibly painful, but it works.

Some other editors won’t report the problem. However, when I tested Kate and nano, for example, those just silently deleted the file on every other save. That’s even worse than the gedit situation…

stackprotector's user avatar

answered Nov 8, 2012 at 1:50

David's user avatar

DavidDavid

2411 silver badge3 bronze badges

6

“Text file busy” can be confusing here: it isn’t actually about text files, but about executables. Executables are called text files because… hum, actually, I don’t know why.

What the message really means is “this file is locked by another program that is using it and can’t let it be modified under its nose, so you can’t write to it.” It is quite unusual to see this message for a text file: unix systems generally frown on mandatory locks on files, and there is no facility for applications to lock out others from modifying a file. (Unix has advisory locks: they can be used to synchronize concurrent accesses to a file by cooperating programs.) The most common circumstance when you’ll see “text file busy” (ETXTBUSY) is if you try to modify an executable that’s running: the kernel locks it. Another possibility is a disk image that is mounted, again locked by the kernel.

In your case, given the location of the file /media/sf_Ubuntu and the ownership to the group vboxsf, my guess is that the file, which is on a VirtualBox file sharing filesystem, is locked in the host operating system. Presumably the host is a Windows machine and you also have the file open in an editor there. You’ll need to close the file on the host before you can save in the editor in the VM.

Community's user avatar

answered Oct 26, 2012 at 23:30

Gilles 'SO- stop being evil''s user avatar

2

Check with lsof if the file is open by another application

lsof /media/sf_Ubuntu/BuildNotes.txt

Or use fuser:

fuser -km /media/sf_Ubuntu/BuildNotes.txt

Mat's user avatar

Mat

50.6k10 gold badges154 silver badges139 bronze badges

answered Oct 26, 2012 at 12:20

Pankaj Sain's user avatar

What fixed it for me (still a bit annoying but works), and is applicable to gedit, is to:

edit — preferences — editor
Put a check on «Create backup copy»

When saving from now on, save the file once, ignore the error, save again.
works every time.

answered Nov 12, 2013 at 15:21

Martin Levasseur's user avatar

1

using linux terminal, try editing the file using vi file_name and save it.
p.s I could not find another solution for this issue. vi worked

answered Sep 22, 2017 at 2:46

Hamsavardhini's user avatar

Я использую виртуальную коробку. Гостем — Ubuntu. Хост — это Windows 7. У меня есть общая папка (совместно используемая хостом и гостем).

Проблема в том, что в гостевой (Ubuntu) я не могу rename/delete/edit файлы в общей папке. Например, после того, как я отредактировал файл и попытаюсь его сохранить, я получаю следующее сообщение об ошибке:

Не удалось сохранить файл fileName. Неожиданная ошибка: ошибка переименования временного файла: текстовый файл занят

В хосте (Windows) я могу без проблем переименовать / отредактировать / удалить. Что я могу сделать?

задан
9 April 2012 в 07:16

поделиться

2 ответа

Как вы установили эту общую папку?

У меня была такая же проблема, но с мощью fstab я, наконец, смог свободно получить доступ к моей общей папке — просто добавил строку:

//shareIP/sharedFolder mountpoint smbfs rw,umask=777,uid=linuxUID,username=winUsername,password=winPassword,auto 0 0

Теперь вы можете перезагрузить свою ОС или просто сделать sudo mount <mountpoint>.

Как-то с «родным» совместным использованием Vbox я не мог этого добиться — даже не получить доступ к общей папке, хотя она была видна.

ответ дан Kris Harper
10 August 2018 в 10:19

поделиться

Вы можете столкнуться с ошибкой # 34813 , когда доступ к общим ресурсам в системах Windows нарушен. Доступ к файлам на хостах Ubuntu не изменяется.

Устранение неполадок общих папок в виртуальной ячейке

Чтобы выяснить, правильно ли настроены ваши общие папки, вы можете выполнить следующие шаги:

  • Установите последнюю версию Virtual Box .
  • Убедитесь, что гостевые дополнения соответствуют вашему выпуску VBox.
  • Не указывать общие папки как доступные для чтения, если вам нужен доступ на запись.
  • Гость должен быть в группа vboxsf для автоматически установленных акций.
  • Установите временные ресурсы с опцией rw и соответствующим uid для доступа на запись (например, sudo mount -t vboxsf -o uid=1000 sharename mountpoint)

ответ дан Takkat
13 August 2018 в 16:43

поделиться

Другие вопросы по тегам:

Похожие вопросы:


Я получаю сообщение «Невозможно сохранить _ Неожиданная ошибка: ошибка переименования временного файла: текстовый файл занят» в Gedit 2, когда я пытаюсь сохранить в общей папке Virtualbox (Debian). Я искал и, видимо, это проблема Gedit. Ни одно из решений не кажется идеальным или не работает для меня.

Можно ли создать сценарий оболочки (плагин внешних инструментов), который сохраняет файл в другом месте, а затем копирует его обратно в оболочку? Поэтому мне нужно взять где бы Gedit хранил временный (живой?) Файл.

Или, если это невозможно / не будет работать / плохая практика, кто-нибудь знает хороший способ обойти это? Мне очень нравится Gedit и я предпочитаю им пользоваться.


В настоящее время это мой сценарий. Я говорю внешним инструментам не сохранять, а передавать документ как ввод (стандартный ввод)

bin=""
while read LINE; do
    echo ${LINE}    # do something with it here
    bin="${bin}${LINE}n"
done

echo $bin > /home/me/data2/test.txt

Он отлично работает, за исключением того, что не сохраняет вкладки. Я только редактирую текстовые файлы. Изменить: это также, кажется, пропустить последнюю строку



Ответы:


В настоящее время я получаю эту проблему как с gedit, так и с geany, на последних версиях mint-lmde и fedora virtualbox vms на хосте Windows 7. Однако Кейт, kwrite, gvim / vim, Qtcreator, libre writer не затрагиваются. Geany и gedit выдают ошибку переименования временного файла: текстовый файл занят. Я использую виртуальную коробку 4.2.16. Поиски в интернете, похоже, проблемы были в течение многих лет.

Я нашел решение для Geany.

с geany 1.23.1 на fedora и 1.22 на mint-lmde

Правка-> Настройки-> Различные галочки use_atomic_file_saving

это должно быть безопаснее в соответствии с руководством. или вы можете снять галочку с use_gio_unsafe_file_saving. Либо работает, объяснения есть в руководстве.

Для Гедит не очень.

С gedit 3.4.2 на mint-lmde нашел только один обходной путь.

Правка-> Настройки-> Редактор снимите флажок Создать резервную копию

Это работает один раз, после этого при втором сохранении не работает, если только вы не начнете возиться с пометкой, сохранением, снятием пометки, сохранением, и это будет работать снова. Похоже на ошибку. С помощью gedit 3.8.3 на fedora можно снять галочку, но исходный файл исчезнет, ​​и останется только резервная копия без каких-либо изменений.


«Текстовый файл занят» означает, что ядро ​​отказывается перемещать / переименовывать / удалять исполняемый файл, работающий как программа. Что вы пытаетесь сохранить?




Я признаю, что это старая ветка, но, поскольку я нашел ее, когда искал решение именно для этой проблемы, я решил, что опубликую свой обходной путь, возможно, он может помочь другим.

В моем случае общая папка находилась на NAS в моей локальной сети, и, кроме проблем с geany, производительность была очень плохой. Мое решение состояло в том, чтобы определить сетевой мостовой адаптер в Virtualbox Manager / Настройки / Сеть для моей виртуальной машины. Затем виртуальная машина получила доступ к моей локальной сети так же, как обычный компьютер. Вместо использования общих папок в Virtualbox я мог бы смонтировать папку как обычный сетевой ресурс, определенный в / etc / fstab. Таким образом, у меня не было папок, определенных в Virtualbox Manager / Настройки / Общие папки. Проблемы со временем исчезли, и производительность значительно улучшилась.

Какая операция генерирует ошибку «текстовый файл занят»? Я не могу точно сказать.

Я думаю, что это связано с тем, что я создаю временный python script (используя tempfile) и используя execl из него, но я думаю, что execl изменяет выполняемый файл.

4b9b3361

Ответ 1

Эта ошибка означает, что какой-либо другой процесс или пользователь обращаются к вашему файлу. Используйте lsof, чтобы проверить, какие другие процессы используют его. Вы можете использовать команду kill, чтобы убить ее, если это необходимо.

Ответ 2

Это время, так как я видел это сообщение, но он был распространен в System V R3 или около двух десятков лет назад. В то время это означало, что вы не могли изменить исполняемый файл программы во время его запуска.

Например, я создавал make workalike под названием rmk, и через некоторое время он был самоподдерживающимся. Я бы запустил версию разработки и создал новую версию. Чтобы заставить его работать, необходимо использовать обходное решение:

gcc -g -Wall -o rmk1 main.o -L. -lrmk -L/Users/jleffler/lib/64 -ljl
if [ -f rmk ] ; then mv rmk rmk2 ; else true; fi ; mv rmk1 rmk

Итак, чтобы избежать проблем с «загруженным текстовым файлом», сборка создала новый файл rmk1, а затем переместила старый rmk в rmk2 (переименование не было проблемой, было отключено) и затем переместил вновь построенный rmk1 в rmk.

Я давно не видел ошибки в современной системе… но я не все, что часто перестраивает программы.

Ответ 3

  Это происходит при попытке записи в файл, который в данный момент выполняется ядром, или при выполнении файла, который в данный момент открыт для записи.

Источник: http://wiki.wlug.org.nz/ETXTBSY

Ответ 4

Пример минимального запуска C POSIX

Я рекомендую понять базовый API, чтобы лучше видеть, что происходит.

sleep.c

#define _XOPEN_SOURCE 700
#include <unistd.h>

int main(void) {
    sleep(10000);
}

busy.c

#define _XOPEN_SOURCE 700
#include <assert.h>
#include <errno.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main(void) {
    int ret = open("sleep.out", O_WRONLY|O_TRUNC);
    assert(errno == ETXTBSY);
    perror("");
    assert(ret == -1);
}

Скомпилируйте и запустите:

gcc -std=c99 -o sleep.out ./sleep.c
gcc -std=c99 -o busy.out ./busy.c
./sleep.out &
./busy.out 

busy.out передает утверждения, а perror выводит:

Text file busy

поэтому мы делаем вывод, что сообщение жестко закодировано в самом glibc.

В качестве альтернативы:

echo asdf > sleep.out

выводит Bash:

-bash: sleep.out: Text file busy

Для более сложных приложений вы также можете наблюдать это с помощью strace:

strace ./busy.out

который содержит:

openat(AT_FDCWD, "sleep.out", O_WRONLY) = -1 ETXTBSY (Text file busy)

Протестировано в Ubuntu 18.04, ядро Linux 4.15.0.

Ошибка не произойдет, если вы unlink сначала

notbusy.c:

#define _XOPEN_SOURCE 700
#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

int main(void) {
    assert(unlink("sleep.out") == 0);
    assert(open("sleep.out", O_WRONLY|O_CREAT) != -1);
}

Затем скомпилируйте и запустите аналогично приведенному выше, и эти утверждения пройдут.

Это объясняет, почему это работает для определенных программ, но не для других. Например. если вы делаете:

gcc -std=c99 -o sleep.out ./sleep.c
./sleep.out &
gcc -std=c99 -o sleep.out ./sleep.c

это не приводит к ошибке, даже если второй вызов gcc пишет в sleep.out.

Краткий strace показывает, что GCC сначала отменяет связь перед записью:

 strace -f gcc -std=c99 -o sleep.out ./sleep.c |& grep sleep.out

содержит:

[pid  3992] unlink("sleep.out")         = 0
[pid  3992] openat(AT_FDCWD, "sleep.out", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3

Причина, по которой он не перестает работать, заключается в том, что когда вы unlink переписываете файл, он создает новый индекс и сохраняет временный висячий индекс для исполняемого исполняемого файла.

Но если вы просто write без unlink, то он пытается записать в тот же защищенный инод, что и исполняемый исполняемый файл.

POSIX 7 open()

http://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html

[ETXTBSY]

Этот файл представляет собой файл чистой процедуры (общий текст), который выполняется и имеет значение O_WRONLY или O_RDWR.

человек 2 открытый

ETXTBSY

pathname относится к исполняемому образу, который в данный момент выполняется, и был запрошен доступ для записи.

Ответ 5

В моем случае я пытался выполнить файл оболочки (с расширением .sh)
в среде csh, и я получал это сообщение об ошибке.

просто работает с bash, это сработало для меня.
Например

bash file.sh

Ответ 6

Не знаю причину, но я могу способствовать быстрой и легкой работе.

Я просто испытал эту эту странность в CentOS 6 после «cat > shScript.sh» (paste, ^ Z), а затем редактировал файл в KWrite. Как ни странно, не было видимого экземпляра (ps -ef) выполнения script.

Моя быстрая работа была просто «cp shScript.sh shScript2.sh», после чего я смог выполнить shScript2.sh. Затем я удалил оба. Готово!

Ответ 7

Вы можете обнаружить, что это более распространено в сетевых ресурсах CIFS/SMB. Windows не позволяет писать файл, когда что-то еще открывает этот файл, и даже если служба не Windows (это может быть какой-то другой продукт NAS), он, вероятно, воспроизведет такое же поведение. Потенциально, это может быть также проявление некоторой проблемы с базой NAS, смутно связанной с блокировкой/репликацией.

Ответ 8

Если вы пытаетесь построить phpredis в ящике Linux, вам может потребоваться время, чтобы завершить модификацию разрешений файла с помощью команды sleep перед запуском файла:

chmod a+x /usr/bin/php/scripts/phpize 
  && sleep 1 
  && /usr/bin/php/scripts/phpize

Ответ 9

Один из моих впечатлений:

Я всегда меняю комбинацию клавиш по умолчанию для Chrome с помощью обратной инженерии. После изменения я забыл закрыть Chrome и выполнил следующее:

sudo cp chrome /opt/google/chrome/chrome
cp: cannot create regular file '/opt/google/chrome/chrome': Text file busy

Используя strace, вы можете найти более подробную информацию:

sudo strace cp ./chrome /opt/google/chrome/chrome 2>&1 |grep 'Text file busy'
open("/opt/google/chrome/chrome", O_WRONLY|O_TRUNC) = -1 ETXTBSY (Text file busy)

Ответ 10

Если вы запускаете .sh из ssh-соединения с помощью такого инструмента, как MobaXTerm, и если в указанном инструменте есть утилита автосохранения для редактирования удаленного файла с локального компьютера, он заблокирует файл.

Закрытие и повторное открытие сессии SSH решает ее.

Ответ 11

Я наткнулся на это в PHP при использовании fopen() в файле, а затем попытался unlink() его перед использованием fclose() на нем.

Нехорошо:

$handle = fopen('file.txt');
// do something
unlink('file.txt');

Хорошо:

$handle = fopen('file.txt');
// do something
fclose($handle);
unlink('file.txt');

0 / 0 / 0

Регистрация: 06.09.2015

Сообщений: 18

1

13.09.2015, 16:34. Показов 1647. Ответов 2


Есть VirtualBox, там общая папка с хостовой
В общую папку закинул папку файл PlayersMap.ini, попытался его подредактировать в Ubuntu выдает то, что на скриншоте
Почему нельзя редактировать?
PS:в windows в общей папке этот файл отображается с тильдой: PlayersMap.ini~

Миниатюры

Файл занят и не редактируется Ubuntu
 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

13.09.2015, 16:34

Ответы с готовыми решениями:

Ubuntu One: Ник занят
Удалял свой старый аккаунт. Пытаюсь создать новый. Пишет, что ник занят. Этот ник не приметный,…

Не редактируется файл HOSTS
Доброго времени суток! У меня возникла беда с файлом hosts, я никак не могу его отредактировать,…

Не редактируется css файл
Всем привет! скажите пожалуйста в чем может быть ошибка? Скачал шаблон,при редатировании…

Не редактируется файл хостов
Нужно внести сайт в файл хостов, но при сохранении пишет &quot;Нет доступа&quot;
В системе я числюсь как…

2

orionit

8 / 8 / 2

Регистрация: 02.09.2015

Сообщений: 85

13.09.2015, 18:20

2

Попробуйте его открыть так

Bash
1
sudo ваш gedit  /путь к файлу/PlayersMap.ini



0



0 / 0 / 0

Регистрация: 11.09.2015

Сообщений: 7

21.09.2015, 00:19

3

можно попробовать поставить восьмеричный атрибут 777



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

21.09.2015, 00:19

3

Понравилась статья? Поделить с друзьями:
  • Неожиданная ошибка при вызове post send code
  • Неожиданная ошибка оценка была отменена power query
  • Неожиданная ошибка не удалось оценить газ для подтверждения
  • Неодинаковый индекс для категории видов работ как исправить
  • Необычный подарок лексическая ошибка