- Все коды ошибок операционной системы Linux
- Вторичный файл ответов коды ошибок при установке — Код ошибки значение — Описание
- Устройство кодов ошибок (перечисленных в-BB-XX-XX-XXXX форме А. А.)
- 2. Формат кодов ошибок (XXXX-BBBB форме). BBBB поля фактические ошибки, что происходит.
- Как использовать коды завершения в Bash-скриптах
- Что такое коды завершения
- Что происходит, когда коды завершения не определены
- Как использовать коды завершения в Bash-скриптах
- Проверяем коды завершения
- Создаём собственный код завершения
- Как использовать коды завершения в командной строке
- Дополнительные коды завершения
Все коды ошибок операционной системы Linux
# Определить EPERM 1 / * Операция не допускается * /
# Определить ENOENT 2 / * Нет такого файла или каталога * /
# Определить ESRCH 3 / * Нет такого процесса * /
# Определить EINTR 4 / * * Прерванный системный вызов /
# Определить EIO 5 / * I / O * ошибка /
# Определить ENXIO 6 / * Нет такого устройства или адреса * /
# Определить E2BIG 7 / * список аргументов слишком долго * /
# Определить ENOEXEC 8 / * Exec формате ошибки * /
# Определить EBADF 9 / * Плохо * номер файла /
# Определить ECHILD 10 / * Ни один ребенок процессов * /
# Определить EAGAIN 11 / * Попробуйте еще раз * /
# Определить ENOMEM 12 / * Из памяти * /
# Определить EACCES 13 / * Доступ запрещен * /
# Определить EFAULT 14 / * Плохой адрес * /
# Определить ENOTBLK 15 / * Блок устройства требуется * /
# Определить EBUSY 16 / * Устройство или ресурс занято * /
# Определить EEXIST 17 / * Файл существует * /
# Определить EXDEV 18 / * кросс-устройства ссылка * /
# Определить ENODEV 19 / * Нет такого устройства * /
# Определить ENOTDIR 20 / * Не каталога * /
# Определить EISDIR 21 / * Есть каталог * /
# Определить EINVAL 22 / * Неправильный аргумент * /
# Определить ENFILE 23 / * файл * Переполнение таблицы /
# Определить EMFILE 24 / * Слишком много открытых файлов * /
# Определить ENOTTY 25 / * Не пишущую машинку * /
# Определить ETXTBSY 26 / * Текстовый файл занят * /
# Определить EFBIG 27 / * Файл слишком большой * /
# Определить ENOSPC 28 / * Нет места на устройстве * /
# Определить ESPIPE 29 / * Незаконное искать * /
# Определить EROFS 30 / * только для чтения * файловой системы /
# Определить EMLINK 31 / * Слишком много ссылок * /
# Определить EPIPE 32 / * * Broken трубы /
# Определить EDOM 33 / * мат аргумента из области функции * /
# Определить ERANGE 34 / * мат результат не представляется * /
Код ошибки значение Описание
0 Действие завершено успешно.
1 Действие возвращается предупреждения.
67 Произошла фатальная ошибка во время установки.
Вторичный файл ответов коды ошибок при установке — Код ошибки значение — Описание
3 Путь не был найден.
5 Отказано в доступе.
10 Среду произошла ошибка.
13 Недопустимые данные.
16 Создание DAS не удалось.
17 Создания экземпляра не удалось.
18 Создание базы данных не удалось.
19 Исправить изображение пакет находится на более низком уровне, чем установленного продукта.
20 Исправить изображение пакет на том же уровне, как установленного продукта. Существует ничего, чтобы обновить.
21 Есть не DB2 (R) продуктов, установленных на выбранное место. Существует ничего, чтобы обновить.
22 Для обновления уже установлен продукт DB2, используйте installFixPack команду вместо команды db2setup.
87 Один из параметров является ошибочным.
66 Установка была отменена пользователем.
74 Данные конфигурации повреждены. Обратитесь в службу поддержки.
76 Установочными файлами для этого продукта недоступен. Убедитесь, что источник существует и доступен.
82 Другая установка уже идет. Полное, что установка, прежде чем приступить к этой установки.
86 Существовал ошибка при открытии файла журнала установки. Убедитесь, что указанное место файла журнала и, что она доступна для записи.
96 Папка Temp переполнена или недоступны. Убедитесь, что папка Temp существует и что вы можете писать на нем.
97 Этот установочный пакет не поддерживается на этой платформе.
102 Другая версия этого продукта уже установлена. Установка этой версии не может продолжаться.
103 Неверный аргумент командной строки.
143 Система не имеет достаточно свободного места, чтобы продолжить установку.
Устройство кодов ошибок (перечисленных в-BB-XX-XX-XXXX форме А. А.)
«AA» это то, что устройство на самом деле делает. Коды объяснить следующим образом:
01 CONFIGFIRS T
02 CONFIGNEXT
03 OPENDRIVE
04 CLOSEDRIVE
05 OpenTape
06 CLOSETAPE
07 READ
08 ПИШИТЕ
09 VERIFY
0A BULKERASE
0B предварительное форматирование
0C ФОРМАТ
0D КРЕПЛЕНИЯ
0E СМЕТА
0F TESTDMA
15 REOPENTAPE
«ВВ» является фактическим код ошибки (см. ниже):
00 успех нормальное завершение
01 водителя / вызывающий несоответствие версий, переустановить продукт
02 драйвер уже установлен, водитель должен быть удален
03 плохой блок обнаружены ошибки СМИ, данные повреждены, попробуйте новые ленты
04 неформатированный области о СМИ встречаются
05 удаленных данных адреса знак найдены нормальные указанием
06 filemark было зачитано по сравнению с обычным указанием
07 искать ленты ошибки формата
08 DMA конфликта, проверка канала DMA, попробуйте минимальной настройки в диспетчере устройств
09 не в состоянии завершить формате. Закройте другие приложения, уменьшить скорость, попробовать различные ленты
0A CTRL разблокировать ошибка: не найден HSC проверить соединения, проверить адрес порта, попробуйте другой / нет контроллера
0B контроллер COM ошибки, проверить адрес порта
0C прерывания не было получено, проверьте настройки IRQ
0D передача команды неудачно, проверьте адрес диска и настройки
0E Неклассифицированные прошивки / привод ошибке сообщили, обновление прошивки, снижение скорости привода, проверить SCSI основы
0F время ожидания для диска, обновление драйверов и прошивок
10 Драйв остался не готовы, обновления драйверов и прошивок
11 неподдерживаемый скорость передачи нормально: скорость передачи данных
12 Драйв сообщили внутренняя проблема, холодной загрузки системы и диска, попробуйте диск на другой машине
13 дисков непризнанных, проверить, если средства массовой информации поддерживается, формат ленты
14 нет средств массовой информации в диск Проверьте питание, чековой ленты, попробуйте другую ленту
15 диск не найден, проверьте питание, связь, возможно конфликтующих программного обеспечения
16 новых средств массовой информации была вставлена, нормальная лента вставляется в неожиданное время.
17 средств массовой информации находится в приводе (автонастройки)
18 ленты despooled
19 СМИ защищен от записи
1А вызов является недействительным
1B не могут allocat памяти или таймера
1С не может выделить IRQ
1D не смог выделить DMA буфера
1E ASPI нет
1F ASPI ошибке
20 Драйв получил неизвестная команда
21 дисков используется другой программой
22 приближается конец ленты
23 сети связи ошибке
24 указанного пути не существует
25 передачи данных успешной
26 конец ленты СМИ была достигнута
27 ошибки в ожидании, произошла ошибка предыдущего запроса
28 сетевое подключение потеряно
29 размер блока на СМИ отличались от того, что диск сообщили
33 vfintd не была доступна
34 неправильный канал DMA указанного
35 требуемый файл драйвера нет
36 последних маркер ошибке
3E AbortIO отменил команду
Пример: «08-12-23-34-1032» будет означать, что диск сообщили внутренние аппаратные проблемы при записи команды был выпущен.
2. Формат кодов ошибок (XXXX-BBBB форме). BBBB поля фактические ошибки, что происходит.
XXXX-BBBB
4352-1000 Драйвер докладов лента не для записи. Проверьте совместимость ленты
4353 1101 Драйвер докладов ленты защищен от записи. Проверка защиты от записи, Проверьте прошивку, возможный вопрос HW
4354 1102 Не удалось загрузить драйвер. Убедитесь, что драйвер существует, переустановите
4355 1103 Драйвер докладов ленте не читается. Проверьте совместимость ленты, попробовать новые ленты
4608 1200 Лента пустым. Существует нет данных на ленте читать
4609 1201 Слишком много плохих секторов на ленте. Нуждается в новой ленте
4610 1202 Лента полном объеме. Формат или использовать новые ленты
4612 1204 Коррекция ошибок не удалось для сегмента на ленте. Новые медиа, формат СМИ
4613 1205 Нет больше данных в объеме. Нет данных в томе
4614 1206 Ошибка при повторной попытке написать заголовок ленты. Новая лента, возможный вопрос оборудования
4615 1207 Драйвер докладов лента не отформатирован или не смогли найти ленту заголовков. Возможная проблема аппаратного
4616 1208 Размер сжатого блока больше свободного пространства в сегменте.
4617 1209 Том таблице нечитаемым Ошибка Проверка целостности данных (ECC). Попробуйте новые медиа
4618 120а набор файлов каталог поврежден. Удалить каталог, ниже скорость передачи, переустановите, попробовать новые медиа
4619 120B Слишком много плохих секторов ECC Fail, новые медиа
4864 1300 не более наборов на пленку, когда программное обеспечение ищет установлен на средства массовой информации, что не существует
4865 1301 Нет больше объемов в комплекте программного обеспечения, когда ищет объеме, что не существует в набор выбранных
4867 1303 не более потоков для файла
4870 1306 Файл не существует на ленту. Файл не на пленку выбранной
4871 1307 Файл не найден в набор файлов каталога. Удалить каталог, ниже скорость передачи, переустановите, попробовать новые медиа
4872 1308 заголовок файла не найдено в файле каталога множество. Заголовок файла не найдено в набор файлов каталога
4882 1312 Нет больше данных для текущего потока
4883 1313 Попытка прочитать файл, который начинается на ленте предыдущих в комплекте
4885 1315 Попытка прочитать файл, который существует до. Продолжить с другой ленты
4886 1316 Том смещение байтов при сжатии. Отключить сжатие
6146 1802 Ошибка при чтении данных из потока. Чтение соединения Ошибка проверки
6147 1803 Не удалось получить память, необходимую для завершения операции. Недостаточно места на диске, возможно низких в памяти
6148 1804 Ошибка в обработке временного пространства. Убедитесь, что температура установлена, удалять папки Темп
6402 1902 Учитывая поток типа, который не понял
6403 1903 Учитывая порции данных для потока, который не соответствует ожидаемому формату
6404 1904 Данная ОС типа, который не понимал. ОС может нуждаются в обновлении
6505 1905 Предпринятая операция, которая не поддерживается для текущего устройства
6506 1906 Сумма данных, записанных в поток не соответствует размеру ожидается
Источник
Как использовать коды завершения в Bash-скриптах
Инструменты автоматизации и мониторинга удобны тем, что разработчик может взять готовые скрипты, при необходимости адаптировать и использовать в своём проекте. Можно заметить, что в некоторых скриптах используются коды завершения (exit codes), а в других нет. О коде завершения легко забыть, но это очень полезный инструмент. Особенно важно использовать его в скриптах командной строки.
Что такое коды завершения
В Linux и других Unix-подобных операционных системах программы во время завершения могут передавать значение родительскому процессу. Это значение называется кодом завершения или состоянием завершения. В POSIX по соглашению действует стандарт: программа передаёт 0 при успешном исполнении и 1 или большее число при неудачном исполнении.
Почему это важно? Если смотреть на коды завершения в контексте скриптов для командной строки, ответ очевиден. Любой полезный Bash-скрипт неизбежно будет использоваться в других скриптах или его обернут в однострочник Bash. Это особенно актуально при использовании инструментов автоматизации типа SaltStack или инструментов мониторинга типа Nagios. Эти программы исполняют скрипт и проверяют статус завершения, чтобы определить, было ли исполнение успешным.
Кроме того, даже если вы не определяете коды завершения, они всё равно есть в ваших скриптах. Но без корректного определения кодов выхода можно столкнуться с проблемами: ложными сообщениями об успешном исполнении, которые могут повлиять на работу скрипта.
Что происходит, когда коды завершения не определены
В Linux любой код, запущенный в командной строке, имеет код завершения. Если код завершения не определён, Bash-скрипты используют код выхода последней запущенной команды. Чтобы лучше понять суть, обратите внимание на пример.
Этот скрипт запускает команды touch и echo . Если запустить этот скрипт без прав суперпользователя, команда touch не выполнится. В этот момент мы хотели бы получить информацию об ошибке с помощью соответствующего кода завершения. Чтобы проверить код выхода, достаточно ввести в командную строку специальную переменную $? . Она печатает код возврата последней запущенной команды.
Как видно, после запуска команды ./tmp.sh получаем код завершения 0 . Этот код говорит об успешном выполнении команды, хотя на самом деле команда не выполнилась. Скрипт из примера выше исполняет две команды: touch и echo . Поскольку код завершения не определён, получаем код выхода последней запущенной команды. Это команда echo , которая успешно выполнилась.
Если убрать из скрипта команду echo , можно получить код завершения команды touch .
Поскольку touch в данном случае — последняя запущенная команда, и она не выполнилась, получаем код возврата 1 .
Как использовать коды завершения в Bash-скриптах
Удаление из скрипта команды echo позволило нам получить код завершения. Что делать, если нужно сделать разные действия в случае успешного и неуспешного выполнения команды touch ? Речь идёт о печати stdout в случае успеха и stderr в случае неуспеха.
Проверяем коды завершения
Выше мы пользовались специальной переменной $? , чтобы получить код завершения скрипта. Также с помощью этой переменной можно проверить, выполнилась ли команда touch успешно.
После рефакторинга скрипта получаем такое поведение:
- Если команда touch выполняется с кодом 0 , скрипт с помощью echo сообщает об успешно созданном файле.
- Если команда touch выполняется с другим кодом, скрипт сообщает, что не смог создать файл.
Любой код завершения кроме 0 значит неудачную попытку создать файл. Скрипт с помощью echo отправляет сообщение о неудаче в stderr .
Создаём собственный код завершения
Наш скрипт уже сообщает об ошибке, если команда touch выполняется с ошибкой. Но в случае успешного выполнения команды мы всё также получаем код 0 .
Поскольку скрипт завершился с ошибкой, было бы не очень хорошей идеей передавать код успешного завершения в другую программу, которая использует этот скрипт. Чтобы добавить собственный код завершения, можно воспользоваться командой exit .
Теперь в случае успешного выполнения команды touch скрипт с помощью echo сообщает об успехе и завершается с кодом 0 . В противном случае скрипт печатает сообщение об ошибке при попытке создать файл и завершается с кодом 1 .
Как использовать коды завершения в командной строке
Скрипт уже умеет сообщать пользователям и программам об успешном или неуспешном выполнении. Теперь его можно использовать с другими инструментами администрирования или однострочниками командной строки.
В примере выше && используется для обозначения «и», а || для обозначения «или». В данном случае команда выполняет скрипт ./tmp.sh , а затем выполняет echo «bam» , если код завершения 0 . Если код завершения 1 , выполняется следующая команда в круглых скобках. Как видно, в скобках для группировки команд снова используются && и || .
Скрипт использует коды завершения, чтобы понять, была ли команда успешно выполнена. Если коды завершения используются некорректно, пользователь скрипта может получить неожиданные результаты при неудачном выполнении команды.
Дополнительные коды завершения
Команда exit принимает числа от 0 до 255 . В большинстве случаев можно обойтись кодами 0 и 1 . Однако есть зарезервированные коды, которые обозначают конкретные ошибки. Список зарезервированных кодов можно посмотреть в документации.
Адаптированный перевод статьи Understanding Exit Codes and how to use them in bash scripts by Benjamin Cane. Мнение администрации Хекслета может не совпадать с мнением автора оригинальной публикации.
Источник