Ошибка ввода-вывода Linux

Обновлено: 04.07.2024

Каждый процесс в Linux снабжен тремя открытыми файлами (обычно называемыми файловыми дескрипторами). Эти файлы являются стандартными входными, выходными файлами и файлами ошибок. По умолчанию:

  • Стандартный ввод — это клавиатура, представленная в виде файла для упрощения написания сценариев оболочки.
  • Стандартный вывод — это окно оболочки или терминал, из которого запускается скрипт, абстрагированный в виде файла, чтобы снова упростить написание скриптов и программ.
  • Стандартная ошибка аналогична стандартному выводу: окно оболочки или терминал, из которого запускается скрипт.

Дескриптор файла – это просто число, обозначающее открытый файл. По умолчанию файловый дескриптор 0 (ноль) относится к стандартному вводу и часто сокращается как stdin. Дескриптор файла 1 относится к стандартному выводу (stdout), а дескриптор файла 2 относится к стандартной ошибке (stderr). Эти номера важны, когда вам нужно получить доступ к определенному файлу, особенно когда вы хотите перенаправить эти файлы в другие места. Номера файловых дескрипторов увеличиваются с нуля.

Перенаправление стандартного вывода

Синтаксис для перенаправления вывода команды в файл.

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

Оператор > указывает оболочке перенаправить вывод команды в указанный файл. Если файл существует, то старое содержимое файла удаляется и заменяется выводом команды.

Перенаправление ввода команды

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

Используйте примечание: мы также можем комбинировать оба перенаправления со следующим синтаксисом:

Стандартная ошибка перенаправления

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

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

2 в 2> относится к файловому дескриптору 2, номеру дескриптора для stderr.

Перенаправление как стандартного вывода, так и стандартной ошибки

Используйте синтаксис 2>&1, чтобы перенаправить стандартную ошибку в то же место, что и стандартный вывод.

Команда выше состоит из трех частей.

  • ls /usr/bin — это команда запуска
  • > command.txt перенаправляет вывод команды ls
  • 2>&1 отправляет выходные данные файлового дескриптора 2, stderr , в то же место, что и файловый дескриптор 1, stdout.

Обратите внимание, что в приведенном выше примере предполагается, что в вашей системе нет имен каталогов «/usr2222/bin»

Одновременное перенаправление stderr и stdout

В приведенной выше команде ls — это команда, /usr2222/bin — это аргумент команды «ls», а «&> command.txt» перенаправляет как stdout, так и stderr в файл с именем command.txt.

Добавление к файлам

Используйте оператор «>>» для перенаправления вывода команды, но добавьте к файлу, если он существует. Синтаксис приведен ниже:

Обрезка файлов:

Мы можем использовать сокращенный синтаксис для усечения файлов, опуская команду перед оператором > . Синтаксис приведен ниже:

Мы также можем использовать альтернативный формат с двоеточием:

Обе эти команды без команд создадут файл, если он не существует, и урежут файл до нуля байтов, если файл существует.

Быстрая отправка вывода в никуда

В некоторых случаях требуется не только перенаправить вывод команды, но и отбросить его. Вы можете сделать это, перенаправив вывод команды в пустой файл «/dev/null». Пустой файл потребляет все отправленные ему выходные данные, как если бы /dev/null — это звезда черной дыры.

Ошибки ввода-вывода при попытках доступа к файловой системе обычно означают проблемы с оборудованием. Введите dmesg и проверьте последние несколько строк вывода. Если диск или подключение к нему не работают, это будет отмечено там.

Что такое ошибка ввода-вывода?

Как исправить ошибку ввода-вывода в Kali Linux?

В этой ситуации первым советом будет проверить /var/log/messages на наличие любых предупреждений, связанных с диском (могут быть обнаружены некоторые предупреждения с ключом). Если вы заметили какие-либо проблемы с диском, попробуйте любую дисковую утилиту, чтобы убедиться в этом. Одним из вариантов было бы использование смарт-инструментов. Вы можете проверить опцию smarttool, чтобы исправить плохие блоки.

Не удается удалить ошибку ввода-вывода?

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

Жесткий диск является входом или выходом?

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

Что такое стандартный ввод и вывод в Linux?

Стандартный ввод — это клавиатура, представленная в виде файла для упрощения написания сценариев оболочки. Стандартный вывод — это окно оболочки или терминал, из которого запускается скрипт, абстрагированный в виде файла, чтобы снова упростить написание скриптов и программ.

Что такое стандартный ввод и вывод ошибок в Linux?

Стандартные потоки Linux

Текстовый вывод команды в оболочку доставляется через поток stdout (стандартный вывод). Сообщения об ошибках от команды отправляются через поток stderr (стандартная ошибка). Итак, вы можете видеть, что есть два потока вывода, stdout и stderr, и один поток ввода, stdin.

Что такое ошибка устройства 1/0?

Что такое ошибка ввода-вывода? Ввод/вывод означает ввод/вывод. Ошибка устройства ввода-вывода — это проблема с устройством, из-за которой Windows не может прочитать его содержимое или записать на него. Он может отображаться на внутреннем жестком диске (HDD или SSD), внешнем жестком диске, USB-накопителе, SD-карте, CD/DVD и т. д.

Что такое ошибка устройства ввода-вывода в флешке?

Большинство ошибок ввода-вывода устройства можно исправить, проверив отсутствие соединения, свойства диска и т. д. Попробуйте снова получить доступ к диску/устройству. Если проблема не устранена, попробуйте получить доступ к данным устройства/диска на другом компьютере/ноутбуке, чтобы убедиться, что диск или устройство не повреждены.

У меня возникла проблема с Ubuntu, которую мне трудно устранить по причинам, которые станут ясны позже:

Поэтому я не вижу, что происходит, и не могу удаленно перезагрузиться. Что я могу сделать, чтобы разобраться в этом?

Я могу просмотреть /var/syslog, но не /var/log/messages или несколько других важных файлов. все больше и больше не работает, ни хвост, ни голова и т.д.

Звучит очень похоже на то, что вы получите после запуска sudo rm -rf / . (Я сделал это специально, просто чтобы посмотреть, что на самом деле происходит.)

2 ответа 2

У системы серьезные проблемы со чтением информации с жесткого диска. Вполне вероятно, что диск мертв (почти наверняка), но это может быть что-то такое же простое, как ослабленный / отсоединенный кабель (не рассчитывайте на это). Здесь вы ничего не можете сделать, чтобы устранить неполадки. Просто выключите его.

Проверьте наличие свободных соединений на жестком диске. Если все в порядке, загрузитесь с аварийного диска и оттуда запустите fsck или badblocks.

Надеюсь, у вас есть резервная копия.

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

Возможно, это была просто ошибка связи (например, отсоединение кабеля). Однако следите за этим. Как только диск начинает выходить из строя, он обычно полностью отключается вскоре после этого.

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

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

Если вы проверите /proc/mounts и найдёте корневую файловую систему, там должна быть такая строка:

Вы увидите, что корневая файловая система смонтирована только для чтения.

По сути, единственное, что можно сделать на этом этапе (при условии, что проблема именно в этом), — это перезагрузиться (с помощью KVM или другого выключателя консоли).


В этом ответе объясняется, что произошло с моей локальной средой WSL2 Ubuntu 20 после заполнения моего локального диска. После исследования монтирования диска с помощью cat /proc/self/mounts мой диск был смонтирован как ro. Если кто-то еще столкнется с этим, WSL эквивалентен этому решению, чтобы освободить место на диске, открыть PowerShell и запустить wsl --shutdown . После того, как я снова загрузился в свою среду wsl, диск был смонтирован как rw, и все снова заработало. Этот ответ действительно спас положение!

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

В этой статье мы объясним возможные причины появления сообщения "errno 5 input/output error" и несколько решений, которые могут помочь в ее устранении.

«[Errno 5] Ошибка ввода/вывода» вызывает

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

Иногда, особенно в ситуации, когда вы используете Linux как виртуальную машину, причина "[Errno 5] Ошибка ввода/вывода" может быть связана с гипервизором. Попробуйте обновить VMware или VirtualBox, чтобы проверить, исчезнет ли проблема.

В настоящее время Windows находится в стадии интенсивной разработки, и каждые несколько месяцев в нее вносятся изменения, что делает работу с виртуальной машиной более сложной, чем когда-либо. На компьютерах с Windows вы должны обратить внимание на Hyper-V, чтобы увидеть, хорошо ли он работает с VirtualBox или VMware. Если Hyper-V вызывает проблему, у вас не будет выбора, кроме как обновить VMware или VirtualBox (или, конечно, переустановить Windows).

"errno 5 ошибка ввода/вывода" при попытке установить Ubuntu/Debian


Ошибка может выглядеть так, как показано на изображении выше.

Это происходит не только в Ubuntu/Debian, идентичное сообщение об ошибке также может отображаться в Linux Mint (поскольку это производная версия Ubuntu).

  • Убедитесь, что содержимое вашего CD/DVD или флэш-накопителя не повреждено. Обычно все, что вам нужно сделать, — это сверить хэш MD5 загруженного вами ISO-файла с официальным значением с веб-сайта Ubuntu/Debian/Linux Mint.
  • Создайте резервную копию существующего диска (весь жесткий диск, а не только важный раздел), затем удалите их все, чтобы переформатировать весь диск. Или вы можете выбрать «Стереть диск и установить Ubuntu», чтобы не удалять разделы вручную.

"errno 5 ошибка ввода/вывода" при использовании Google Colab

Colaboratory, также известная как Google Colab, – это продукт Google Research, который позволяет запускать код Python через браузер и особенно подходит для анализа данных, машинного обучения и обучения. Colab также позволяет запускать терминальные команды с префиксом восклицательного знака.

Иногда запуск команд терминала в Colab возвращает ""[Errno 5] Ошибка ввода/вывода". Другой формой этой ошибки является "OSError: [Errno 5] Ошибка ввода/вывода" при попытке запустить код Python, который обращается к файловая система.

    . Мы рекомендуем не превышать 50 вложенных папок/файлов.
  • Старайтесь не выполнять слишком много операций чтения/записи в смонтированной папке Google Диска. Вместо этого напишите на диск виртуальной среды, а затем переместите их все в смонтированную папку Google Диска. Функциональность перемещения данных должна быть тщательно закодирована и протестирована до запуска Google Colab.
  • Старайтесь не запускать какие-либо фрагменты кода слишком долго, так как это может привести к тому, что Colab вызовет ошибку тайм-аута.
  • Старайтесь не перемещать слишком много данных за короткий промежуток времени. Google устанавливает квоты, которые не обязательно отображать при использовании Colab. По сути, после превышения лимита вы получаете ошибку ввода-вывода [Errno 5] независимо от файла или операции, которую вы выполняли.
  • Если вы сомневаетесь, переместите файлы и папки из /content/drive перед выполнением каких-либо действий с ними, это может решить вашу проблему.

"OSError: errno 5 ошибка ввода/вывода" с Python

На самом деле не имеет значения, используете ли вы Django, Odoo, PyTorch или низкоуровневые библиотеки, такие как pexpect или Shutil, если что-то не так при чтении/записи данных на диск, "OSError: errno 5 ошибка ввода/вывода " может быть первой ошибкой, которую вы увидите.

Есть несколько вещей, которые вы можете попробовать, в зависимости от вашего конкретного сценария:

  • Проверьте диск на наличие ошибок. В Windows вы можете запустить chkdsk. В Linux есть fsck. Если есть исправимые ошибки, они будут исправлены. После этого ваша программа на Python может работать без проблем.
  • Внимательно проверьте разрешения папки/каталога, в которых вы работаете. Они должны включать соответствующие разрешения на чтение/запись.
  • Замените диск, чтобы проверить, исчезнет ли проблема. Если да, то ваш дисковод неисправен.

Мы надеемся, что приведенные выше решения помогут вам решить вашу проблему и узнать что-то новое. Если вы новичок в Linux, вы можете ознакомиться с нашим руководством по распространенным сообщениям об ошибках, таким как «ifconfig: команда не найдена» и «невозможно stat». Резервное копирование также важно, чтобы избежать потери данных, поэтому мы подготовили более 10 практических примеров Rclone — руководство по Rclone для начинающих, чтобы вы могли быстрее приступить к работе.

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