Intereting Posts
Почему не работают следующие команды для ограничения трафика на порт 21 с помощью tc? Как исправить btrfs? исходный файл с ключами и значениями и использовать его в perl-коде выйдите из всех соединений SSH в одной команде и закройте PuTTY pactl работает в пользовательском пространстве не как root на i3 запустить демон при запуске / логине, если запланированное время пропущено Драйвер Linux не работает должным образом, когда скомпилирован в ядро Apt / Aptitude: как фильтровать пакеты, которые невозможно установить? Драйверы Realtek предотвращают обнаружение интерфейса eth1? PS1 из .bashrc переопределен где-то в другом месте Сравнение нескольких строк в Bash Как получить репозиторий yum для работы в контейнере Docker? Многострочные записи в файле кикстарта с использованием обратного слэша Запускать только ядро ​​Linux и пользовательские программы Драйвер для чипа Broadcom 14e4: 43ba

Невозможно перезаписать файл, перемещая его поверх него

У меня есть файл /some/foo который является текстовым файлом. Я могу редактировать его с помощью vim и я могу что-то сделать для него. Но всякий раз, когда я пытаюсь автоматизировать процесс редактирования с помощью sed , он говорит:

 sed: cannot move '/some/sedGl29Uj': Device or resource busy 

Я попытался перенаправить вывод sed во временный файл и cat , все в порядке. Но если я попытаюсь переместить временный файл на него, он скажет:

 root@localhost:/some # mv tmp foo mv: Device or resource busy 

Я очень обеспокоен тем, почему vim и cat могут писать файл, но mv не может.
Ubuntu 16.04.1 LTS. /some – подпапка / (точка монтирования корня, ext4).

Нашел ответ при управлении накопителями. Появилась странная линия, когда я проверял установленные диски.

 ~ # mount | grep /etc/hosts /tmp/hosts on /etc/hosts type tmpfs (rw,nosuid,nodev,noexec,bind) 

Это меня удивило. После копания всех скриптов, которые я использовал, я нашел эту строку в скрипте модификатора хостов

 sudo mount -o bind /tmp/hosts /etc/hosts 

Затем я попробовал что-то еще:

 /tmp # echo aaa > a /tmp # mount -o bind ab; cat b aaa /tmp # echo bbb > b; cat a bbb /tmp # echo ccc > c /tmp # mv cb mv: Device or resource busy 

Вероятно, у вас нет доступа на запись в каталог. Операции с файлами: создавать, удалять и переименовывать все, изменять каталог.

cat и vim просто изменяют содержимое файла и не нуждаются в изменении файла. sed -i пишет временный файл и переименовывает его.