Не удается удалить файл, но может удалить родительский каталог

Поэтому в основном я пытаюсь удалить файлы:

/var/lib/mysql/db/nomNomina2.* 

и когда я ищу их с локацией, я получаю следующий вывод:

 /var/lib/mysql/db/nomNomina2.MYD /var/lib/mysql/db/nomNomina2.MYI /var/lib/mysql/db/nomNomina2.frm 

но затем я пытаюсь

  $ rm -fv /var/lib/mysql/db/nomNomina2.frm 

Я не получаю выход, но файлы все еще отображаются при использовании локации.

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

Любые идеи, что может быть причиной этого? файловая система беспорядок? как исправить?

  • Найдите определенные папки
  • Как найти путь?
  • «найти» для нечувствительных к регистру слов?
  • Индикатор выполнения в updatedb
  • найти файл по его полному имени файла?
  • Как найти только исполняемые файлы, используя «locate»?
  • Как вы инвертируете команду «locate». Ex. Показать все, кроме X
  • Разница между локацией и mlocate
  • 2 Solutions collect form web for “Не удается удалить файл, но может удалить родительский каталог”

    locate не зависит от текущей, текущей информации о файлах, присутствующих в вашей системе. Информация кэшируется в базе данных.

    Также рассмотрите знаменитую линию со ссылкой:

    Это не работает! Должен ли я обвинять кеширование?

    Для получения актуальной информации о том, какие файлы / каталоги существуют на вашем поле прямо сейчас , используйте ls или find или stat или test -e filename && echo it is there или даже printf %s\\n * . Практически все, кроме locate , предоставит вам самую свежую информацию о вашей файловой системе.

    См. Также LESS=+/BUGS man locate который (в моей системе) читает частично:

     BUGS The locate program may fail to list some files that are present, or may list files that have been removed from the system. This is because locate only reports files that are present in the database... 

    Вы можете запустить updatedb , но, честно говоря, если вы точно знаете, где находятся файлы, и вы используете их для поиска … вы просто делаете это неправильно. locate указывает путь. Он ничего не говорит о существовании или отсутствии файлов на этом пути. Если вы уже знаете путь к файлу, вам не нужно locate , не так ли?

    Цель поиска – «быстро найти имена файлов», не обязательно точно или надежно.


    Примечание. Я не говорю «не используйте locate ». У него есть цель, когда вы не знаете, где в вашей системе может быть определенный файл. Но как только вы получите путь от locate , он выполнил свою задачу, и теперь вам нужно использовать другие инструменты для проверки / проверки / etc. файл, который вы нашли.

    locate не ищет файлы на диске, а ищет пути к файлам в базе данных. База данных – это файл, содержащий информацию о файлах и их пути в вашей системе.

    Таким образом, одним из ограничений команды «locate» является его зависимость от базы данных, которая может быть обновлена ​​другой утилитой «updatedb». Следовательно, чтобы получить последние и надежные результаты из команды «locate», база данных, на которой она работает, должна обновляться через регулярные промежутки времени.

    следовательно, после удаления файла вы должны проверить существование файла с помощью команды #find, которая ищет файл в режиме реального времени. #find / var / lib / mysql / db / -iname "nomNomina2. *"

    Linux и Unix - лучшая ОС в мире.