Не удалось получить статистику по такому файлу или каталогу

Обновлено: 29.06.2024

Я разрабатывал React-приложение, и вдруг оно остановилось, раньше такого никогда не было, поэтому мне любопытно, почему это произошло?

Я не знаю, был ли раньше файл с именем "/Kolkata", но теперь он присутствует с корневым корнем lrwxrwxrwx 1

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

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

1 Ответ 1

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

Символические ссылки не исчезают автоматически, если они не работают; вы по-прежнему можете видеть их в списках каталогов, и вы можете вызвать для них lstat(), но вы, конечно, получите ошибку «Не существует» при вызове простой stat(), так как она должна возвращать информацию о цели, не о ссылке, и действительно нет цели.

Таким образом, это нормально, чтобы получить эту ошибку, если ваше приложение было написано для отображения каталога и вызова stat() для каждого найденного элемента, а также если оно обнаружило неработающую символическую ссылку. Вы получите ту же ошибку, если попытаетесь выполнить проверку или иным образом открыть неработающую ссылку. (Инструмент ls отлично работает, потому что он использует lstat(), но если вы попробуете ls -L, вы все равно получите ту же ошибку.)

Кто создал ссылку? Кто-то с правами root или sudo (возможно, вы). На всякий случай проверьте журнал sudo в journalctl -t sudo или /var/log/auth.log.

Почему ваше приложение решило обратить на это внимание? Он ищет файл часового пояса, поэтому он должен получить этот путь либо из переменной среды TZ, либо из файла /etc/timezone. Проверьте содержимое обоих — если они присутствуют, вместо этого они должны говорить «Азия/Калькутта». (Если какой-либо из них отсутствует, ничего страшного.)

Кроме того, проверьте файл /etc/localtime — он определяет общесистемный часовой пояс и должен быть символической ссылкой на какой-либо файл в каталоге /usr/share/zoneinfo (хотя иногда это может быть просто копия этого файла). , но тогда я бы рекомендовал заменить его символической ссылкой).

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

Использование mv для перемещения файлов и каталогов стало повседневной задачей каждого пользователя Linux, независимо от используемого дистрибутива. Иногда пользователи могут столкнуться с несколькими распространенными сообщениями об ошибках, написанными на странных языках, что сбивает с толку новичков. В этой статье мы хотим разобраться с одной из самых популярных ошибок при использовании mv или cp в Linux: ошибка «невозможно stat».

Что означает "не могу получить статистику"

Stat — это программа, которая получает информацию о файле или каталоге в Linux. Поскольку в Linux каждая программа должна делать только одно и полагаться друг на друга, чтобы делать другие вещи, программы, выполняющие операции с файловой системой, должны использовать stat в качестве стандартного способа получения таких сведений, как метаданные, размер, дата изменения, разрешения и т. д. < /p>

Как и любая другая программа, перед выполнением любой операции mv или cp должны знать некоторую информацию об исходном файле/каталоге и целевом. По умолчанию это делается с помощью статистики.

Для вызова stat для каталога требуется разрешение на выполнение только для каталога, содержащего файл. Разрешение на чтение файлов не требуется.

Имея это в виду, _каждый раз, когда при использовании mv вы видите сообщение "cannot stat", вы можете с уверенностью предположить, что stat не смог получить информацию о файле. В этом случае проблема должна быть в самом файле/каталоге или устройстве хранения.

Исправление не может указать «имя файла»: нет такого файла или каталога

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

Если вы столкнулись с сообщением «cannot stat» с сообщением «Нет такого файла или каталога», сначала проверьте путь назначения, а затем исходный путь на предмет их правильности.


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

Исправление не может получить статистику: разрешение отклонено

Эта ошибка означает, что stat не может прочитать информацию о файле, так как он был отклонен путем запрета разрешения "выполнение".

Вы должны проверить права доступа к каталогу, содержащему файл, и к самому файлу. Быстрое и грязное решение — использовать chmod для рекурсивного изменения разрешения каталога и всего его содержимого на 755.


Возможно, вам потребуется повысить права root с помощью sudo, если вы не являетесь владельцем папки. Однако любые изменения в защищенных каталогах могут привести к нестабильности системы, и мы советуем внимательно изучить каталог, прежде чем рекурсивно изменять его.

Исправление не может отображать «имя папки»: ошибка ввода/вывода

Среди всех ошибок "не удается получить статистику" ту, которая содержит сообщения "Ошибка ввода/вывода", труднее всего отлаживать и исправлять. В большинстве случаев появление этой ошибки означает наличие какого-либо повреждения файловой системы.

Ошибка ввода/вывода в разделах NTFS

Обычно, когда новички сталкиваются с ошибкой ввода/вывода, они обращаются к файлам из разделов, отформатированных в NTFS.

NTFS — это стандарт файловой системы Microsoft, известный своей сложной системой разрешений. Linux может управлять этими разделами благодаря системной программе ntfs-3g , но иногда не может прочитать диск из-за незначительного повреждения данных.

В этом случае вам следует подумать об использовании программы, встроенной в ntfs-3g, которая называется ntfs-fix . Но прежде чем вносить какие-либо исправления в файловую систему, имейте в виду, что это может привести к серьезной потере данных.


Если вам нужно решение для резервного копирования с открытым исходным кодом, которое может работать с облачными службами хранения, обязательно ознакомьтесь с rclone. Вы можете легко начать работу, не изучая слишком много об инструменте, с нашим руководством по общим командам rclone.

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

Ошибка ввода/вывода в разделах ext

Во-первых, убедитесь, что файловая система размонтирована. Если файловая система является корневым разделом, вам необходимо загрузиться в режиме восстановления или использовать живой CD/USB-накопитель, чтобы вы могли проверить файловую систему, пока она не смонтирована.

Чтобы запустить проверку файловой системы, используйте команду e2fsck. Например, если вы получаете сообщение об ошибке в файловой системе, смонтированной в разделе /dev/hda4, выполните следующую команду:

Если приведенная выше команда возвращает ошибки о "плохом суперблоке", выполните следующую команду:

Найдите номер блока резервного суперблока в выходных данных:

Запустите e2fsck еще раз, на этот раз с резервным номером суперблока:

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

Начиная с сегодняшнего дня, независимо от того, пытаюсь ли я обновить chroot ИЛИ просто собрать пакет, происходит сбой со следующей ошибкой:

Не удалось получить /репозиторий: нет такого файла или каталога

Моя система обновлена.

Текст был успешно обновлен, но возникли следующие ошибки:

stef204 прокомментировал 3 сентября 2019 г.

Конечно. Я пытался избежать этого, поэтому сначала написал здесь, но я сделаю и доложу.

stef204 прокомментировал 3 сентября 2019 г.

Все в порядке, сбросил ядерную бомбу и начал заново, проблема решена. Я закрою это. Спасибо.

Adsun701 прокомментировал 4 сентября 2019 г.

Я уничтожил свой chroot и попытался снова, но статистическая ошибка возникает снова, когда пакет впервые добавляется в /repo .

graysky2 прокомментировал 4 сентября 2019 г. •

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

graysky2 прокомментировал 4 сентября 2019 г. •

Кажется, проблема заключается в том, что что-то модифицирует chroot pacman.conf, чтобы раскомментировать CacheDir=, и когда ccm запускается во второй раз, литерал /repo добавляется к раскомментированному значению по умолчанию. Мне нужно копать, чтобы увидеть, что.

EDIT: может быть:
/usr/bin/makechrootpkg
/usr/bin/arch-nspawn

Я готов помочь с этим/довольно загружен работой на этой неделе.

stef204 прокомментировал 5 сентября 2019 г. •

Я пытался написать в чате +i в домене . chroot64/$USER/etc/pacman.conf , чтобы увидеть, останется ли он неизменным, но не помогает, rsync выдает ошибку атрибута файла, а ошибка файла /repo все еще присутствует.
Временное понижение версии одной из версий devtools «исправляет» проблему, но, очевидно, не решает ее.
Отчет об ошибке необходим для инструментов разработки? Считаете ли вы, что это строго из-за ccm?

Graysky2 прокомментировал 5 сентября 2019 г.

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

anatol прокомментировал 6 сентября 2019 г.

Инструменты разработчика изменили способ обработки смонтированных каталогов для среды chroot.

больше нет опции -D с опцией makechrootpkg. Он берет смонтированные пути репозиториев из самого pacman.conf — все пути, начинающиеся с file://, теперь автоматически монтируются в тот же путь.

В моем случае исправление было следующим:

  • чтобы удалить опцию -D из makechrootpkg
  • использовать путь хоста с моим пользовательским сервером
  • Я также удалил CacheDir, и это не повлияло на мою функциональность.

Graysky2 прокомментировал 6 сентября 2019 г.

@anatol - Спасибо за совет.
@stef204 - Попробуйте версию 2.97 и сообщите об этом. Работает на меня. Обратите внимание, что вам нужно сначала уничтожить chroot.

stef204 прокомментировал 7 сентября 2019 г.

Выглядит хорошо, работает, спасибо.

Graysky2 прокомментировал 16 октября 2019 г.

Привет, я также получаю эту ошибку (Failed to stat /repo: No such file or directory) после сборки llvm-minimal-git и последующей попытки собрать mesa-git с помощью "ccm64 S". Это произошло со свежезачищенным chroot. Попытка использовать «ccm64 s» для mesa-git вместо этого дает мне следующую ошибку «Не удалось разрешить /home/user/Data/chroot/user//home/user/Data/chroot//root/repo: нет такого файла или каталог"

Я не могу воспроизвести. Я собрал llvm-minimal-git ( ccm s ), а затем собрал mesa-git ( ccm S ), и оба пакета были успешно собраны.

gillecaluim прокомментировал 17 октября 2019 г.

Я думаю, что, возможно, в вашей системе есть что-то другое, чем у всех остальных, у кого есть проблема
Может быть, вы могли бы создать новую виртуальную машину Arch Linux и протестировать ее?

комментарий jpapadopoulos прокомментирован 17 октября 2019 г.

Кажется, я понял, в чем причина проблемы. В моей конфигурации путь для chroot был "/path/chroot/", и я заметил в скеле, что это "/path/chroot" . Удаление лишней косой черты позволило мне создать второй пакет

gillecaluim прокомментировал 17 октября 2019 г.

Я рад, что помог вам, но это не моя проблема

jpapadopoulos прокомментировал 17 октября 2019 г. •

Проблема возникает в строке 286. Когда путь записывается с конечным знаком /, он добавляется к пути сервера, например.
"file:///path/to/chroot//root/repo" вместо "file:///path/to/chroot/root/repo" .
Удаление косой черты вручную из pacman.conf также решило проблему для меня

Я рад, что помог вам, но это не моя проблема

Просто для ясности, и я мог бы констатировать очевидное, но вам нужно отредактировать pacman.conf chroot или уничтожить chroot, исправить конфигурацию ccm, а затем создать ее заново

graysky2 прокомментировал 17 октября 2019 г. •

@jpapadopoulos - Можете ли вы опубликовать вывод
grep CHR ~/.config/clean-chroot-manager.conf

gillecaluim прокомментировал 17 октября 2019 г.

grep CHR ~/.config/clean-chroot-manager.conf
CHROOTPATH64="/build/archPKG/custom/chroot64"

graysky2 прокомментировал 17 октября 2019 г.

Есть ли что-нибудь уникальное в вашей настройке? Я не могу воспроизвести это. Какая файловая система находится на вашем CHROOTPATH64?

gillecaluim прокомментировал 18 октября 2019 г.

Единственное отличие от большинства состоит в том, что я rsync'ировал пакеты core/extra/community на сервер и указывал на них, а не на список зеркал для pacman и, следовательно, собирал. Я не сталкиваюсь с какими-либо проблемами с makepkg или дополнительными методами сборки x86_64, хотя
Это помогает мне справляться с постоянной перестройкой/разбивкой, вызванной скользящим выпуском arch linux

полный нуб, так что заранее спасибо за помощь.

Я использую Linux на своем Chromebook и пытаюсь установить Vuescan.

При установке мне было предложено ввести следующее:

Тем не менее, когда я это делаю, я получаю: cp: cannot stat 'vuescan.svg': Нет такого файла или каталога

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

См. прикрепленный снимок экрана.

введите здесь описание изображения

Мы очень ценим любую помощь или предложения.

Я искал что-то для ошибки Нет такого файла или каталога, потому что он не в правильном каталоге, и это то, что я нашел.

В терминале Ubuntu введите следующие команды: pwd и ls . Затем отредактируйте свой вопрос, скопируйте и вставьте текст из терминала в вопрос. Наконец, отформатируйте вставленный текст как код, используя кнопку < > над окном редактирования. Вывод этих команд расскажет нам больше о ваших папках и, надеюсь, о том, как добраться до «Мои файлы/Linux-файлы/VueScan» в терминале. Как только вы обновите вопрос, я смогу предоставить точные команды для изменения каталога в терминале.

1 Ответ 1

Я не знаком с запуском Ubuntu в ChromeOS. Мне кажется, что папка VueScan существует в двух местах:

На снимке экрана файловый менеджер показывает расположение как: Мои файлы/Linux-файлы/VueScan

На основании вывода команд pwd и ls расположение:

Возможно, ChromeOS и Ubuntu немного по-разному обозначают расположение файлов. Эти два находятся в одном и том же месте. Я предполагаю, что да.

Шаг 1. Измените каталог на VueScan в терминале

Откройте терминал (если он еще не открыт) и введите:

Примечание. В файлах Linux учитывается регистр. VueScan и vuescan — это совершенно разные папки или файлы. Так что печатайте осторожно. Когда вы введете указанную выше команду и нажмете Enter, командная строка изменится с:

Теперь вы знаете, что находитесь внутри папки ~/VueScan.

Шаг 2. Скопируйте файлы, как указано:

Теперь вы можете следовать инструкциям и использовать команду cp для копирования файлов в указанное место. Например:

Теперь приведенная выше команда должна работать, и файл vuescan.svg находится в папке ~/VueScan, и вы вошли в эту папку.

Примечание. Обычно при успешном копировании файла вы не получаете подтверждения. По умолчанию сообщается только об ошибках.

Вы можете избежать изменения каталога, команды cd и использовать только команду копирования, cp и сообщить команде, где находится исходный файл:

Обратите внимание на прописные и строчные буквы в именах папок и файлов. Также не забудьте ~ и / перед именем папки. ~ обозначает ваше текущее местоположение, то есть /home/robwilton. Я знаю это из вывода команды pwd.

Итак, другой способ указать местоположение исходного файла:

Теперь вы можете скопировать все файлы в соответствующие папки одним из двух способов.

/bin/find: ошибка stat(): нет такого файла или каталога

Информационный аватар участника

117, 0

Я получаю следующую ошибку в Solaris 10 SPARC при попытке выполнить поиск в разделе /var/tmp

Ниже приведен запрос

Ниже результат

Информационный аватар участника

10, 3

можете опубликовать свой PATH

проверьте свою команду

и если у вас возникла та же проблема, опубликуйте результат этой команды

Информационный аватар участника

23 310, 4 623 

Эта ошибка повторяется? Он может видеть файл в каталоге, но не имеет возможности просмотреть его до того, как он будет удален, что имеет смысл для /tmp/.

Информационный аватар участника

117, 0

Эта ошибка является регулярной, так как cronjob запускается каждый день, чтобы найти файлы в этом каталоге (например, /var/tmp). Можно ли что-нибудь сделать, чтобы выявить проблему?

Информационный аватар участника

4 940 703 

Информационный аватар участника

117, 0

В соответствии с просьбой я временно очистил PATH, но все равно получаю ту же ошибку.

Я прикрепил файл для приведенной ниже команды по запросу.

Информационный аватар участника

4 940 703 

Еще 10 обсуждений, которые могут вас заинтересовать

1. Программирование оболочки и создание сценариев

Ошибка получения: /usr/bin/env: ruby: Нет такого файла или каталога

Привет, я установил ruby ​​с помощью rvm под пользователем root в Linux. Теперь я пытаюсь выполнить приведенную ниже команду как пользователь без полномочий root с привилегиями sudo. sudo /usr/local/rvm/rubies/ruby-2.2.5/bin/gem install пассажир Я получаю следующую ошибку: я даже сбросил путь как для gem, так и для ruby, как и вы. (8 ответов)

Обсуждение начато: mohtashims

2. UNIX для чайников, вопросы и ответы

Cp: невозможно указать �src/last??�: Нет такого файла или каталога

Добрый день. Я пытаюсь установить последнюю версию ПОСЛЕДНЕЙ программы (last.cbrc.jp) на свой Windows64bit с помощью Cygwin64. Я успешно загрузил его и следовал инструкциям по его установке. Однако, когда я попытался выполнить команду «make install prefix=~», я получил эту ошибку, как показано на рисунке. (0 ответов)

Обсуждение начато: nicole_john_

3. UNIX для чайников, вопросы и ответы

Невозможно определить �/albiero�: нет такого файла или каталога

Итак, на моем внешнем жестком диске я пытаюсь скопировать одну папку в другую папку sudo cp /albiero /home и получаю сообщение об ошибке не могу stat �/albiero': Нет такого файла или каталога Хотя обе папки существуют drwxr-xr -x 44 root root 4096 31 окт 15:15 albiero drwxr-xr-x 2 root . (2 ответа)

Обсуждение начато: albiero

4. Программирование оболочки и создание сценариев

Cp: невозможно указать Нет такого файла или каталога

Обсуждение начато: Рами Редди

5. UNIX для чайников, вопросы и ответы

Cp: не может стат. нет такого файла или каталога

Пожалуйста, просмотрите приведенную ниже проблему и скажите, что мне нужно сделать. Я не могу скопировать zip-файл.$ ls -l total 10 drwxrwx--- 1 root vboxsf 0 1 февраля 16:10 sf_Temp drwxrwx--- 2 root vboxsf 4096 31 января 17:59 sf_VBoxShared dr-xr-xr-x 6 oracle root 2048 19 декабря 09:20 VBOXADDITIONS_4.2.6_82870 $cp -r. (2 ответа)

Читайте также: