Русские Блоги
Очередь сообщений Linux для межпроцессного взаимодействия
1. Основные концепции очередей сообщений
1.1 Что такое очередь сообщений?
Очередь сообщений — это, по сути, очередь (с характеристиками «первым пришел — первым вышел»), а элементы, хранящиеся в очереди, представляют собой блоки буфера сообщений (сообщения).
Блок буфера сообщений:
Пользовательская структура данных (может быть аналогична узлам в связанном списке), используемая для хранения информации, один из методов связи между процессами, структура выглядит следующим образом:
проход:
не имеет существенного значения. В некоторых книгах он определяется не как канал, а как тип — категория. Его функция состоит в том, чтобы классифицировать блоки кэша сообщений, а блоки кэша сообщений с одинаковым значением канала относятся к одной и той же категории.
1.2 Роль очередей сообщений
При передаче сообщений между разными процессами, между двумя процессамиСвязьСлишком высокий, изменение одного процесса приводит к изменению другого процесса. Чтобы изолировать два процесса, между двумя процессами извлекается слой (модуль). Все сообщения, передаваемые между двумя процессами, должны отправляться через очередь сообщений. Передавать, изменять один процесс индивидуально, не затрагивая другой;
При передаче сообщений между различными процессами для достижения стандартизации формат сообщения стандартизируется, и определенный процесс получает слишком много сообщений, которые не могут быть обработаны одновременно. Для этого требуется последовательность, и полученные Сообщения ставятся в очередь, поэтому возникла фактическая очередь сообщений;
1.3 Ограничения очередей сообщений
- Максимальная длина каждого сообщения имеет верхний предел (MSGMAX),
Используйте команды cat /proc/sys/kernel/msgmax Посмотреть. - Общее количество байтов в каждой очереди сообщений ограничено (MSGMNB),
Используйте команды cat /proc/sys/kernel/msgmnb Посмотреть. - Общее количество очередей сообщений в системе также имеет верхний предел (MSGMNI),
Используйте команды cat /proc/sys/kernel/msgmni Посмотреть. - Как только сообщение в очереди сообщений удалено, оно исчезает из очереди, и одно и то же сообщение не может быть удалено несколько раз.
2. Различные операции с очередью сообщений.
2.1 Просмотр очереди сообщений
Инструкции по использованию ipcs -q Просмотрите существующие очереди сообщений в системе.
Значение каждого элемента в приведенной выше таблице (слева направо):
Ключ очереди сообщений (ключ) | Идентификатор очереди сообщений (msqid) | Системный пользователь (владелец) | Разрешение очереди сообщений (perms) | Размер очереди сообщений (использованные байты) | Количество сообщений в очереди сообщений (сообщений) |
---|
2.2 Удалить очередь сообщений
Используйте команду ipcrm -Q + key Удалите очередь сообщений, ключевое слово очереди сообщений которой является ключевым.
2.3 Создание очереди сообщений
2.3.1 О ключе параметров
Ключ — это ключ очереди, который уникален для каждой очереди сообщений. Функция сравнивает его с ключевыми словами существующей очереди сообщений, чтобы определить, была ли создана очередь сообщений, а затем определяет msgget Выполняет ли функция операцию создания или открытия.
Обычно используется ftok Функция для производства ключей.
2.3.2 О параметре msgflg
msgflg Вы можете принять следующие значения:
0: взять идентификатор очереди сообщений, если он не существует, функция сообщит об ошибке.
IPC_CREAT :
Если объект очереди сообщений не существует, создайте его, в противном случае откройте; IPC_CREAT Позже вы можете добавить разрешения, например 0666 И т. Д. То же, что и права доступа к файлам; вы также можете добавить IPC_EXCL 。
IPC_EXCL :
IPC_CREAT Используйте вместе (используйте | Connection), если объект сообщения не существует, создайте его, иначеСгенерировать ошибку и вернуть。
Если используется отдельно IPC_CREAT Логотип, msgget() Функция возвращает либо идентификатор существующей очереди сообщений, либо идентификатор вновь созданной очереди сообщений.
Если вы измените IPC_CREAT с участием IPC_EXCL Логотип используется вместе, msgget() Вернет идентификатор вновь созданной очереди сообщений или -1. Если объект очереди сообщений уже существует, IPC_EXCL Сам логотип не имеет большого значения, но и IPC_CREAT Знаки можно использовать вместе, чтобыРезультирующая очередь сообщений — это вновь созданная очередь сообщений вместо уже существующей открытой очереди сообщений.。
2.3.3 пример использования msgget
Плюс IPC_EXCL Позже, если вы создадите очередь сообщений с тем же значением ключа, будет сообщено об ошибке:
2.4 Запись данных в очередь сообщений
Шаги операции записи:
- Создать или открыть очередь сообщений;
- Создайте блок буфера сообщений и запишите содержимое сообщения в этот блок буфера сообщений;
- Записать содержимое этого блока кэша в указанную группу сообщений;
2.5 Чтение данных из очереди сообщений
О параметрах msgtyp :
Очередь сообщений может использоваться несколькими процессами. Предположим, что есть 4 процесса, использующих эту очередь сообщений, и они взаимодействуют друг с другом. В это время необходимо определить, какие два процесса принадлежат группе, а какой буфер сообщений в очереди сообщений принадлежит вам. Используется на этот раз msgtyp 。
39. Организация очереди сообщений в ос unix. Структура сообщения. Отправка и принятие сообщений.
Очереди сообщений располагаются в адресном пространстве ядра операционной системы в виде однонаправленных списков и имеют ограничение по объему информации, хранящейся в каждой очереди. Каждый элемент списка представляет собой отдельное сообщение. Сообщения имеют атрибут, называемый типом сообщения. Очереди сообщений, как и другие средства System V IPC, позволяют организовать взаимодействие процессов, не находящихся одновременно в вычислительной системе.
Для создания очереди сообщений, ассоциированной с определенным ключом, или доступа по ключу к уже существующей очереди используется системный вызов msgget(), являющийся аналогом системных вызовов shmget() для разделяемой памяти и semget() для массива семафоров, который возвращает значение IPC-дескриптора для этой очереди.
Системный вызов msgget()
int msgget(key_t key, int msgflg);
Системный вызов msgget предназначен для выполнения операции доступа к очереди сообщений и, в случае ее успешного завершения, возвращает дескриптор System V IPC для этой очереди (целое неотрицательное число, однозначно характеризующее очередь сообщений внутри вычислительной системы и использующееся в дальнейшем для других операций с ней).
Параметр key является ключом System V IPC для очереди сообщений, т. е. фактически ее именем из пространства имен System V IPC. В качестве значения этого параметра может быть использовано значение ключа, полученное с помощью функции ftok(), или специальное значение IPC_PRIVATE. Использование значения IPC_PRIVATE всегда приводит к попытке создания новой очереди сообщений с ключом, который не совпадает со значением ключа ни одной из уже существующих очередей и не может быть получен с помощью функции ftok() ни при одной комбинации ее параметров.
Параметр msgflg – флаги – играет роль только при создании новой очереди сообщений и определяет права различных пользователей при доступе к очереди, а также необходимость создания новой очереди и поведение системного вызова при попытке создания. Он является некоторой комбинацией (с помощью операции побитовое или – «|») следующих предопределенных значений и восьмеричных прав доступа:
IPC_CREAT — если очереди для указанного ключа не существует, она должна быть создана;
IPC_EXCL — применяется совместно с флагом IPC_CREAT. При совместном их использовании и существовании массива с указанным ключом доступ к очереди не производится и констатируется ошибочная ситуация, при этом переменная errno, описанная в файле <errno.h>, примет значение EEXIST;
0400 — разрешено чтение для пользователя, создавшего очередь;
0200 — разрешена запись для пользователя, создавшего очередь;
0040 — разрешено чтение для группы пользователя, создавшего очередь;
0020 — разрешена запись для группы пользователя, создавшего очередь;
0004 — разрешено чтение для всех остальных пользователей;
0002 — разрешена запись для всех остальных пользователей;
Возвращаемое значение: Системный вызов возвращает значение дескриптора System V IPC для очереди сообщений при нормальном завершении и значение -1 при возникновении ошибки.
Системный вызов msgsnd()
int msgsnd(int id, void* buf,size_t size, int flag);
Системный вызов msgsnd предназначен для помещения сообщения в очередь сообщений, т. е. является реализацией примитива send.
Параметр id является дескриптором System V IPC для очереди, в которую отправляется сообщение, т. е. значением, которое вернул системный вызов msgget() при создании очереди или при ее поиске по ключу.
Структура void* buf описана в файле <sys/msg.h> как
Она представляет собой некоторый шаблон структуры сообщения пользователя. Сообщение пользователя – это структура, первый элемент которой обязательно имеет тип long и содержит тип сообщения, а далее следует информативная часть теоретически произвольной длины.
Тип сообщения должен быть строго положительным числом. Действительная длина полезной части информации (т. е. информации, расположенной в структуре после типа сообщения) должна быть передана системному вызову в качестве параметра size. Этот параметр может быть равен и 0, если вся полезная информация заключается в самом факте наличия сообщения. Системный вызов копирует сообщение, расположенное по адресу, на который указывает параметр ptr, в очередь сообщений, заданную дескриптором id.
Параметр flag может принимать два значения: 0 и IPC_NOWAIT. Если значение флага равно 0, и в очереди не хватает места для того, чтобы поместить сообщение, то системный вызов блокируется до тех пор, пока не освободится место. При значении флага IPC_NOWAIT системный вызов в этой ситуации не блокируется, а констатирует возникновение ошибки с установлением значения переменной errno, описанной в файле <errno.h>, равным EAGAIN.
Возвращаемое значение: Системный вызов возвращает значение 0 при нормальном завершении и значение -1 при возникновении ошибки.
Системный вызов msgrcv()
#include <sys/ipc.h> #include <sys/msg.h>
int msgrcv(int id, void* buf,size_t size, long type, int flag);
Системный вызов msgrcv предназначен для получения сообщения из очереди сообщений, т. е. является реализацией примитива receive.
Параметр id является дескриптором System V IPC для очереди, из которой должно быть получено сообщение, т. е. значением, которое вернул системный вызов msgget() при создании очереди или при ее поиске по ключу.
Параметр type определяет способ выборки сообщения из очереди.
Структура void* buf описана в файле <sys/msg.h> как
Она представляет собой некоторый шаблон структуры сообщения пользователя. Сообщение пользователя – это структура, первый элемент которой обязательно имеет тип long и содержит тип сообщения, а далее следует информативная часть теоретически произвольной длины.
Параметр size должен содержать максимальную длину полезной части информации (т. е. информации, расположенной в структуре после типа сообщения), которая может быть размещена в сообщении.
В случае удачи системный вызов копирует выбранное сообщение из очереди сообщений по адресу, указанному в параметре ptr, одновременно удаляя его из очереди сообщений.
Параметр flag может принимать значение 0 или быть какой-либо комбинацией флагов IPC_NOWAIT и MSG_NOERROR. Если флаг IPC_NOWAIT не установлен и очередь сообщений пуста или в ней нет сообщений с заказанным типом, то системный вызов блокируется до появления запрошенного сообщения. При установлении флага IPC_NOWAIT системный вызов в этой ситуации не блокируется, а констатирует возникновение ошибки с установлением значения переменной errno, описанной в файле <errno.h>, равным EAGAIN. Если действительная длина полезной части информации в выбранном сообщении превышает значение, указанное в параметре size и флаг MSG_NOERROR не установлен, то выборка сообщения не производится, и фиксируется наличие ошибочной ситуации. Если флаг MSG_NOERROR установлен, то в этом случае ошибки не возникает, а сообщение копируется в сокращенном виде.
Возвращаемое значение: Системный вызов возвращает при нормальном завершении действительную длину полезной части информации (т. е. информации, расположенной в структуре после типа сообщения), скопированной из очереди сообщений, и значение -1 при возникновении ошибки.
Системный вызов msgctl()
int msgctl(int msgid, int cmd,struct msqid_ds *buf);
Системный вызов msgctl предназначен для получения информации об очереди сообщений, изменения ее атрибутов и удаления из системы.
В нашем курсе мы будем пользоваться системным вызовом msgctl только для удаления очереди сообщений из системы. Параметр msqid является дескриптором System V IPC для очереди сообщений, т. е. значением, которое вернул системный вызов msgget() при создании очереди или при ее поиске по ключу.
В качестве параметра cmd в рамках нашего курса мы всегда будем передавать значение IPC_RMID – команду для удаления очереди сообщений с заданным идентификатором. Параметр buf для этой команды не используется, поэтому мы всегда будем подставлять туда значение NULL.
Возвращаемое значение: Системный вызов возвращает значение 0 при нормальном завершении и значение -1 при возникновении ошибки.
Что представляет собой понятие сообщение message linux
MESSAGES(7)
НАЗВАНИЕ
messages — Описание сообщений системного операторского терминала.
ОПИСАНИЕ
В этом разделе описываются различные системные сообщения, которые появляются на системном операторском пульте. Все выдаваемые сообщения имеют следующий формат: Внизу объясняются сегменты: label Имя драйвера или программы, где появилась ошибка. severity Уровень серьезности ошибки, выбираемый из четырех уровней: PANIC Эти фатальные сообщения указывают на аппаратные проблемы или несогласованности ядра, которые слишком серьезны для продолжения работы. После выдачи сообщения PANIC система останавливается. Требуется перезагрузка. ERROR Затрагивается использование ресурсов. Необходимо некоторое корректирующее действие. WARNING Индикация ошибки, которую следует выдать на дисплей (например, свободное файловое пространство мало), но не требующая немедленного действия. INFO Нуждается в некоторой информации о системе. comment Поле, содержащее информацию о проблеме управления. action Действия, необходимые в данной ситуации.
Системные сообщения об ошибках генерируются командным процессором и не выполняют никаких преобразований.
Значение системных сообщений
Следующие классификации дают ключ для использования и определения дейсвий, необходимых для исправления ошибочной ситуации. Каждое сообщение ядра входит в один из следующих классов.Классификация такова: System inconsistency Противоречивая ситуация в ядре. Abnormal Возможна законная, но экстремальная, ситуация. Hardware Указывает на проблемы оборудования.
System inconsistency сообщения указывают на проблемы, трассируемые при сбое оборудования, такие как провал памяти. Эти сообщения редко появляются c тех пор, как проблемы, связанные с оборудованием, стали обнаруживаться обычно до того, как появится несогласованность.
Abnormal сообщения представляют операционные проблемы ядра, такие как переполнение критической таблицы. Они берут экстремальные ситуации, которые влекут за собой эти проблемы, поэтому им не следует никогда появляться при использовании нормальных систем. Следовательно, в некоторых случаях вы можете изменять параметры ядра, которые вызывают сообщения об ошибках. Использование утилиты configure(1) делает необходимым сообщения.
Hardware сообщения обычно определяют устройство dev, вызвавшее ошибку. Каждое сообщение выдает спецификацию устройства в виде nn/mm, где nn — большее число устройства, а mm — меньшее из двух чисел. Командный конвейер
может быть использован в списке имен устройства, связанного с данными большим и меньшим числами.
Системные сообщения
**Normal System Shutdown**
Это сообщение появляется, когда система завершает работу надлежащим образом. Оно отмечает, что устройство может быть сразу перезагружено или выключено.
kernel:PANIC:**ABNORMAL System Shutdoun**
Это сообщение появляется, когда во время прекращения работы в системе появляются ошибки. Обычно они выдаются вместе с другими сообщениями. System inconsistency, fatal.
kernel:WARNING:bad block on dev nn/mm
Не найдено ни одного действующего блока или не вставлено в структурном свободном списке. System inconsistency.
kernel:WARNING:bad count on dev nn/mm
Структурная несогласованность в суперблоке файловой системы. Система пытается починится, а за этим сообщением вероятно будет следовать много жалоб об этой файловой системе. System inconsistency.
kernel:WARNING:Bad free count on dev nn/mm
Структурная несогласованность в суперблоке файловой системы. Система пытается починиться, а за этим сообщением вероятно будет следовать много жалоб об этой файловой системе.
kernel:ERROR:error on dev name (nn/mm)
Это вариант, с которого начинается большинство сообщений драйвера. В сообщении будет отмечаться определенный драйвер и жалоба. Name — слово, определяющее устройство.
kernel:ERROR:iadress > 2^24
Это сообщение указывает, что пытались обратиться к числу незаконного блока, которое слишком велико и могло появиться только в файловой системе, превышающей 8 биллионов байтов.Abnormal.
kernel:WARNING:Inode table overflow
Каждый открытый файл требует дескрипторный ввод для того, чтобы быть сохраненным в памяти. Когда таблица переполняется, отказываются от определенного требования (обычно open(2) или creat(2)). Хотя это не смертельно для системы, это событие может повредить работе различных спулеров, демонов, почтальонов и других важных утилит. Аварийные результаты и отсутствующие поля данных являются общим результом. Использование configure(1) для увеличения числа дескрипторов. Abnormal.
kernel:WARNING:interrupt from unknown device, vec=num
ЦПУ получает прерывание через предположительно не использованный до сих пор вектор. Это сообщение следует за сообщением «panic:unknown interrupt». Как правило, это событие происходит, когда сбой технического обеспечения приводит к неправильному вычислению вектора действительного прерывания. Hardware.
kernel:WARNING:stray interrupt on vector num
ЦПУ получает прерывание от предполжительно неиспользованного вектора. Hardware.
kernel:WARNING:no file
Слишком много входных файлов. У системы кончились входы таблицы «открыть файл». Здесь применяются предупреждения, даваемые для сообщения «inode table overflow». Чтобы увеличить общее число доступных файлов, испльзуйте configure(1). Отметим, что число открытых файлов за сеанс не конфигурируется. Abnormal.
kernel:WARNING:no space on dev nn/mm
Это сообщение означает, что у определенной файловой системы кончились свободные блоки. Системный администратор должен внимательно следить за величиной свободного места на диске и предпринимать шаги, чтобы избежать данной ситуации.
kernel:WARNING:out of inodes on dev nn/mm
В отмеченной файловой системе кончились свободные дискрипторы. Число доступных файловой системе дискрипторов определяется при создании файловой системы ( с помощью mkfs(1)). По умолчанию это число достаточно велико, и это сообщение должно встречаться очень редко. Единственное средство — удалить некоторые незначащие файлы из файловой системы или сбросить всю систему на вспомогательное устройство, вычислить mksf(1) с большим числом определенных дискрипторов и восстановить файлы из резерва. Abnormal.
kernel:WARNING:out of text
Когда программы, подсоединенные с ld -i или -n подключением вычисляются на машине 286 базирования, таблица входов создается так, чтобы в памяти была одна копия чистого текста, даже если есть много копий вычисляемой программы. Это сообщение появляется, когда таблица полна. Система отказывается вычислять программу, которая вызвала переполнение. Отметим, что в этой таблице есть только один вход для каждой отдельной текстовой программы. Множественные копии одной программы не потребуют множественных табличных входов. В этой таблице каждая «липкая» программа (смотри chmod(1)) требует постоянного входа; «нелипкие» чистые текстовые программы требуют ввод только, когда вычисляется, по крайней мере, одна копия. Используйте configure(8) для увеличения текстовых сегментов. Abnormal.
kernel:PANIC:bad 287 int
Производилась попытка вычислить команду действительного вида 287 на компьюторе 286 базирования. System inconsistency, fatal.
kernel:PANIC:blkdev
Запрос внутреннего диска ввода/вывода, уже определенный как действительный, ссылается на несуществующий диск. System inconsistency, fatal.
kernel:PANIC:devtab
Запрос внутреннего диска ввода/вывода, уже определенный как действительный, ссылается на несуществующий диск. System inconsistency, fatal.
kernel:PANIC:iinit
Суперблок корневого файла системы не может быть считан. Это сообщение появляется только во время загрузки. Hardware, fatal.
kernel:PANIC:swap IO error
Произошла фатальная ошибка ввода/вывода при чтении или записи области сохранения. System inconsistency, fatal.
kernel:PANIC:memory failure-parity error
Прерывание аппаратной памяти. System inconsistency, fatal.
kernel:PANIC:no fs
Из системной таблицы монтирования исчезла системная запись смонтированного файла. System inconsistency, fatal.
kernel:PANIC:no imt
Система смонтированных файлов исчезла из таблицы монтирования. System inconsistency, fatal.
kernel:PANIC:no procs
Каждый пользователь ограничен в выборе отдельных процессов, которые он может иметь; попытка создать новый процесс, когда нет ни одного в наличии, или когда ограничение пользователя превышено и исчерпано. Это случайное событие не вызывает консольного сообщения; этот сбой происходит, если в ядре удостоверяется, что в наличии свободная запись в таблице процессов, но при попытке обращения к ней она не находится.System inconsistency, fatal.
kernel:PANIC:Out of swap
Не хватает места на диске сохранения для поддержки задачи. Система отказывается создавать задачи, когда она чувствует, что на диске не хватает места, но есть возможность создать ситуации обхода этого механизма. Отметим, что это условие порождает PANIC на машинах 286 и WARNING на машинах 386. Abnormal.
kernel:PANIC:general protection trap
Предпринято общее прерывание защиты в ядре. System inconsistency, fatal.
kernel:PANIC:segment not present
Была сделана попытка доступа в запорченный сегмент. Может быть также указано, что в ядре было предпринято прерывание отсутствия сегмена. System inconsistency, fatal.
kernel:PANIC:Timeout table overflow
Таблица времени ожидания события полна. Драйверами устройств порождаются запросы об истечении времени ожидания событий, как правило, требуется место для одного входа на системную последовательную строку для других использований. Используйте configure(1) для увеличения числа записий в таблицу.
kernel:PANIC:Trap in system
ЦПУ генерирует прерывание нелегальной команды тем, что выполняет ядро или же код драйвера. Этому сообщению предшествует информационный дамп, описывающий прерывание. System inconsistency, fatal.
kernel:PANIC:Invalid TSS
Внутренняя таблица разрушилась.System inconsistency, fatal.
kernel:WARNING:bootstring invalid, ignored
По команде Boot была введена неправильная строка загрузки.
kernel:ERROR:bad syntax-string
По команде Boot была введена неправильная строка загрузки.
kernel:PANIC:bad mapping in copyio
Копирование ввода/вывода было вызвано снеправильным запросом. Обычно из за плохого драйвера.
kernel:WARNING:HARDWARE FAILURE:386 incorrectly multiplies 32-bit numbers
ЦПУ показывает 32-битную ошибку умножения.
kernel:PANIC:***POWER CYCLE TO REBOOT***
Это сообщение появляется вслед за приведенным выше сообщением о 32-битной ошибке HARDWARE FAILURE.
kernel:INFO:10 bits of I/O address decoding
Аппаратура декодирует только 10-битные адреса ввода/вывода. Эта величина в большинстве случаев достаточна. Это условие является существенным, только если нужно связать усройства ввода/вывода с базовым адресом, превышающим 400(в десятичном).
kernel:WARNING:А31 CPU bug workaround not possible for this machine
A31 была определена в строке загрузки, но не может применяться в текущей системе.
kernel:INFO:A31 CPU bug workaround in effect
A31 была определена в строке загрузки, а в настоящее время действует рабочее программное обеспечение.
kernel:PANIC:bad boot string
По запросу Boot была введена неправильная строка загрузки.
kernel:PANIC:**WYSE/SCO XENIX only operates on WYSE PC systems**
Ядро было предназначено только для аппаратуры WYSE, а загружается не на WYSE.
kernel:PANIC:out of both memory & swap
Нет больше свободных страниц памяти или подкачки.
kernel:PANIC:not enough contiguous memory
Программы распределения памяти ядра требуют больше физически непрерывной памяти. Либо уменьшены некоторые параметры ядра (как буферов дисков), либо добавлена физическая память.
kernel:WARNING:filesystem page read failed
Произошла ошибка при попытке чтения страницы с диска. Это не фатальная ошибка, но обычно демонстрирует аппаратные проблемы.
kernel:PANIC:free inode isn't
Запорчена таблица дискрипторов.
kernel:ERROR:Map overflow (num), shutdown and reboote, mp>mpent
Неадекватное отображение внутреннего ядра. Перезагрузите вашу систему.
kernel:PANIC:write_sb():cannot cvts3superb() yet
Это сообщение присутствует только в 386 ядре. Была попытка записи в суперблок системных файлов SYS III и SYS V. Это действие не возможно из за предыдущих проверок.
kernel:WARNING:Can't allocate message buffer
Это сообщение отмечает недостаток памяти. Процессы должны быть прекращены для получения большей памяти. Для увеличения физической памяти существуют другие параметры.
kernel:PANIC:Large model 386 ssig
Ошибка во внутреннем ядре при обработке сигналов большой модели 386.
Trap 2type
Это сообщение предшествует сообщению «kernel:PANIC:». 2type 0 — это номер, выдаваемый процессором при прерывании. За сообщением следует дамп регистр. 2 System inconsistency, fatal.
fpsave:PANIC:no fp_task
Нет никакого контекста плавающей точки для сохранения. Ошибка во внутреннем ядре.
mdep.386/fp.c:WARNING:Nofloating point emulator found in string
/etc/emulator не присутсвует в корневой файловой системе. Системный администратор должен остановить его и перезагрузиться.
fp_OVERRUN:PANIC:coprocessor overrun - with no 287/387
Ошибка внутреннего вспомогательного процессора. fatal.
fp_COPROC:PANIC:coprocessor error - with no 287/387
Несогласованное внутреннее состояние ядра.
fp_COPROC:PANIC:coprocessor error - switched away from fp_task
Неправильное управление внутреннего ядра в процессах с плавающей точкой.
fp_DNA:PANIC:
Произошло прерывание устройства при эмуляции команды с плавающей точкой.
iinit:PANIC:cannot copy in superblock
Произошла ошибка при загрузке суперблока корневой файловой системы.
srmount:PANIC:cannot cvtv7superb()yet
Суперблок корневой файловой системы не был опознан, как суперблок SYS III и SYS V. Суперблоки V7 в настоящий момент в 386 ядре не преобразовываются.
mapphys:PANIC:sptmap overflow
Нет в наличии страниц в системной таблице страниц. Это внутренняя ошибка ядра обычно вызывается неисправным драйвером устройства.
physio:PANIC:bad state
Драйвер устройства сделал неправильный запрос physio.
badint:PANIC:bad interrupt handler
Неправильный запрос прерывания, обычно повинна аппаратура.
setup:PANIC:sptmap overflow
Это сообщение указывает возможную порчу образа ядра, или нехватку физической памяти.
setup:PANIC:u-area not page alieng
Указывает на возможную порчу образа ядра.
setup:PANIC:u-area address does not match SPTADDR
Указывает на возможную порчу образа ядра.
cmn_err:PANIC:DOUBLE PANIC
Происходит зацикливание в ядре. Вы должны перезагрузиться.
cmn_err:PANIC:unknown level in cmn_err (level=num, msg=string)
Программа ядра cmn_err() была вызвана с неправильным аргументом.
Сообщения страничного обмена.
Следующие сообщения указывают о системной несогласованности при кодировании страничного обмена в ядре. Это несоответствие может быть вызвано аппаратурой или программами. Перезагрузите вашу систему и обратите внимание на обстоятельства, если вы увидите одно из следующих сообщений:
Выше приводятся сообщения системы, указывающие на системную несогласованность при кодировании страничного обмена в ядре. Эти несогласованности могут быть вызваны аппаратурой или программами. Перезагрузите вашу систему.
Три ошибки, приведенные выше, указывают на ошибки совместно используемых данных внутри ядра.
Эти две ошибки указывают на ошибки управления внутренним файлом в ядре.
Сообщения системного обслуживания
Эти сообщения выдаются, когда выходит из строя системный вызов.
Not owner:
Обычно, эта ошибка говорит о попытке изменить файл некоторым способом, который разрешается только пользователю или суперпользователю. Она выдается также для того, чтобы обычный пользователь мог попытаться выполнять действия, доступные только суперпользователю.
No such file or directjry:
Эта ошибка появляется, когда определено имя файла, и файл должен существовать, но он не найден, или когда один из каталогов в полном имени отсутствует.
No such process:
Не может быть найден процесс, который соответсвенно определяется с помощью pid в kill или ptrace.
Interrupted system call:
Асинхронный сигнал (такой как сигнал прерывания или окончания), выбранный пользователем, появился во время системного вызова. Если выполнение возобновляется после обработки сигнала, он появится только, когда вызов системы прерывания вернет ошибочное условие.
I/O error:
Ошибка некоторого устройства ввода/вывода. Эта ошибка в некоторых случаях может появляться при вызове следующего, действительно применяемого устройства.
No such device or address:
При вводе/выводе специального файла поисходит ссылка на несуществующее устройство. Также это сообщение может появляться, например, магнитофон — не однострочный, или пакет дисков не загружен не драйвере.
Arg list too long:
Список аргументов, превышающий 5,120 байтов,представлен членами cemeйства exec.
Exec format error:
Запрос о выполнении файла, несмотря на соответствующее разрешение, не стартовал с магическим числом (смотри a.out(5)).
Bad file number:
Какой-либо дескриптор файла ссылается на неоткрытый файл или был сделан запрос о чтении (или записи) файла, открытого только по записи (или чтению).
No child processes:
wait обрабатывается процессом, у которого не было дочерних процессов.
No more processes:
fork вышел из сторя, потому что полна таблица системных процессов, или пользователю не разрешено создавать любые другие процессы.
Not enough space:
Во время выполнения exec или sbrk прорамма запрашивает места больше, чем система может предоставить. Это не временное условие; объем максимального пространства является системным параметром. Ошибка может также появится, если расположение текста, данных и сегментов стека требует слишком много регистров сегментации, или нет достаточной области сохранения во время выполнения fork.
Permission denied:
Была предпринята попытка обращения к файлу способом, запрещенным системой защиты.
Bad address:
Система столкнулась с недостатком аппаратуры при попытке использовать аргумент системного вызова.
Block device requred:
Неблочный файл упоминается там, где требуется блочное устройство, т.е. в mount.
Device busy:
Попытка смонтировать устройство, которое уже смонтировано, или была предпринята попытка демонтировать устройство, на котором существует активный файл (открытый файл, текущий каталог, вмонтированный файл, открытый текстовый сегмент). Также появится это сообщение, если предпринимается попытка разблокирования учета системных ресурсов, когда оно уже выполнено.
File exist:
Существующий файл упоминается в неподходящем контексте, т.е. link.
Cross-device link:
Предпринималась попытка связи файла с другим устройством.
No such device:
Нет определенного каталога, когда он запрашивается, например, в обоих префиксах или как аргумент chdir(2).
Is a directory:
Попытка записать директорию.
Invalid argument:
Неправильный аргумент (т.е. демонтированный в немонтированном усройстве; упоминающийся как неопределенный сигнал в signal или kill; файл по чтению или по записи, для которого lseek порождает отрицательную ссылку). Также устанавливается математическими функциями, описанными во вступлении (2) данного руководства.
File table overflow:
Заполнена таблица системных файлов, и opens временно не могут больше приниматься.
Too many open files:
Процесс не может иметь больше, чем 60 файловых дескрипторов, открытых на время.
Not a character device
Text file busy:
Попытка выполнить процедуру без побочного эффекта, которая в настоящий момент открыта для записи ( и по чтению). Также была попытка открыть эту программу для записи в момент ее выполнения.
File too large:
Размер файла превышает максимальный размер (1,082,201,088 байтов) или ULIMIT; смотри ulimit(2).
No spase left on device:
Во время работы write в обычном файле не существует свободного места, допустимого на устройстве.
Illegal seek:
lseek была выпущена в программный канал.
Read-only file system:
Предпринималась попытка изменить файл или каталог на устройстве, смонтированном только для чтения.
Too many links:
Попытка превысить максимальное число связей (1000) в файле.
Broken pipe:
Запись на программном канале, для которого не существует процесса считывания дааных. Это условие обычно генерирует сигнал; выдается ошибка, если сигнал игнорируется.
Arg out of domain of func:
Аргумент функции в математическом пакете из домена функции.
Result too large:
Значение функции в математическом пакете не представлено в пределах компьютерной точности.
File system needs cleaning:
Была попытка сделать в mount(2) систему файлов, чей суперблок не очищен.
Would deadlock:
Попытка закрыть область файла, которая будет вызывать тупиковую ситуацию между процессами, соперничающими в управлении данной областью.
Not a name file:
creatsem(2), opensem(2), waitsem(2) или sigsem(2) запускаются использованием ошибочного семафорного идентификатора.
Not available:
opensem(2), waitsem(2) или sigsem(2) запускаются семафором, который не был инициализирован с помощью вызова creatsem(2). sigsem запускается семафором из последовательности; например, перед тем, как процесс запускается, соответствующая waitsem на семафоре. nbwaitsem запускается семафором, охраняющим ресурсы, которые в настоящее время используются другими процессами. Семафор, на котором ждал процесс, был в несогласованном состоянии, когда процесс, управляющий семафором, выходит без обработки управляющего свойства; т.е. без выдачи waitsem на семафор.
A name file:
Имя файла (семафор, общие данные и т.п.) было определено, когда оно не ожидалось.
No message of desired type:
Была предпринята ошибка получить сообщение, тип которого отсутствует в очереди сообщений (смотри msgop(2)).
Identifier removed:
Эта ошибка возвращается к процессу, который возобновляет выполнение вследствие удаления идентификатора из области системного имени файла; смотри msgctl(2), semctl(2), shmctl(2).
No record locks available:
В fcntl(2) установка и удаление захватов записей в файле не может завершаться, так как не существует больше вводов записей, покидающих систему.
Deadlock situation detected/ avoited
Выявлена и избегается тупиковая ситуация. Эта ошибка принадлежит файлу и блокировке записи.
Not a stream device
Был предпринят ситемный вызов putmsg(2) и getmsg(2) в файловом дескрипторе, который не является устройством STREAMS.
No data available
Timer expired
Время, установленное для вызова STREAMS ioctl(2), истекло. Причиной ошибки является специфика устройства, и может указывать на неполадки либо аппаратуры, либо программного обеспчения, или, возможно, значение времени истечения события слишком коротко для определенной операции. Статус операции ioctl(2) не определен.
Out of stream resources
Во время выполнения STREAMS open(2) любая из очередей STREAMS или заголовок STREAMS структур данных не доступны.
Machine is not on the network
Этой ошибкой является спецификация Remote File Sharing (RFS). Она появляется, когда пользователи пытаются объявлять, не объявлять, монтировать или демонтировать дистанционные ресурсы, пока компьютер не начнет выполнять надлежащие действия для того, чтобы соединиться с сетью.
Package not installed
Эта ошибка появляется, когда пользователи пытаются использовать системный вызов из пакета, который не настроен.
Object is remote
Эта ошибка REF спецификации. Она появляется, когда пользователи пытаются объявить ресурс, которого нет в локальном компьюторе, или пытаются монтировать/демонтировать устройство (или полное имя), которое находится на удаленном компьюторе.
Link has been severed
Эта ошибка REF спецификации. Она появляется, когда теряется звено (виртуальный канал), подсоединяющее к удаленному компьютеру.
Advertise error
Эта ошибка REF спецификации. Она появляется, когда пользователи пытаются объявить ресурс, который уже объявлен , или пытаются остановить RFS, пока ресурсы еще объявляются, или пытаются усилить демонтировку ресурса, когда он еще объявляется.
Srmount error
Эта ошибка REF спецификации. Она появляется, когда пользователи пытаются остановить RFS, в то время, как удаленными компьютерами еще монтируются ресурсы.
Communication error on send
Эта ошибка REF спесификации. Она появляется, когда пытаются послать сообщения удаленным компьютерам, а виртуальный канал не может быть найден.
Protocol error
Обнаружена некоторая ошибка в протоколе. Это ошибка спецификации устройства, но, в-основном, она не имеет отношения к неполадкам аппаратуры.
Multihop attempted
Эта ошибка REF спецификации. Она появляется, когда пользователи пытаются обратиться к удаленным ресурсам, которые тотчас не доступны.
- real(2) — управляющая информация или просматриваемый файловый дескриптор.
- getmsg(2) — просматриваемый файловый дескриптор.
- ioctl(2) — информация управления или о данных.
Name not unique on network
File descriptor in bad state
Remote address changed
Cannot access a needed shared library
Попытка выполнить a.out с помощью exec(2), требующую общую библиотеку (быть связанной с), а общая библиотека не существует, или пользователю не разрешено использовать ее.
Accessing a corrupted shared library
Попытка выполнить a.out с помощью exec(2), требующую общую библиотеку (быть связанной с), и exec(2) не может загрузить общую библиотеку. Общая библиотека возможно повреждена.
Attempting to link in more shared libraries than system limit
Попытка выполнить a.out с помощью exec(2), требующую более общие, чем располагает текущая конфигурация системы, библиотеки (быть подсоединенной к). Смотри System Administrator’s Guide.
Cannot exec a shared library directly
Попытка присоединить с помощью exec(2S) тотчас общую библиотеку. Это не позволительно.
Сообщения драйвера
Эти сообщения отличаются от сообщений ядра, в которых они генерируются драйверами для разнообразной аппаратуры, поддерживающей XENIX. Источник сообщений может определяться контролем области сообщения label.
Сообщения драйвера операторского терминала
console:WARNING:Kernel messages lost on non-text screen (also check /usr/adm/messages)
Сообщения ядра были потеряны, когда операторский терминал был в графическом режиме и не выходил. Контроль последних строк в /usr/adm/messages для поиска сообщений.
console:WARNING:Too many keyboard groups
Видеоустройств, прикрепленных к системе, больше, чем требуется для поддержания вашего ядра.
Сообщения драйвера IRWIN
IRWIN:ERROR:Tape bad block table was not succesfully read.
Когда открыто лентопротяжное устройство, в памяти cчитывается таблица плохих блоков. Это сообщение указывает, считывание проходит неправильно.
IRWIN:ERROR:Tape is not formatted.
Лента должна форматироваться перед использованием.
IRWIN:ERROR:Tape is write protected.
Маркер защиты записи должен быть снят перед использованием.
IRWIN:ERROR:Cannot write to DC1000 cartidge.
Только дисководы 110 или 210 модели IRWIN могут записывать на кассеты DC1000.
IRWIN:ERROR:Not enough memory for mini-cartige; retrying.
IRWIN ждет достаточной памяти пользователя, для того чтобы стало возможным использование усройства.
IRWIN:ERROR:Not enough memory for mini-cartige; open failed.
IRWIN не получил достаточно памяти для того, чтобы можно было использовать устройство после нескольких вводов.
IRWIN:ERROR:Tape write error.
По неизвестным причинам попытка записи была безуспешной.
IRWIN:ERROR:Tape verify error.
По неизвестным причинам попытка верификации была безуспешной.
IRWIN:ERROR:Tape read error.
По неизвестным причинам попытка чтения была безуспешной.
IRWIN:ERROR:Tape uncorrectable ECC error.
Обнаружилась некорректируемая ошибка памяти в ECC, проверте вашу аппаратуру для неисправных микросхем.
IRWIN:ERROR:Cannot format DC1000 cartige.
Только дисководы 110 или 210 модели IRWIN могут записывать на кассеты DC1000.
IRWIN:ERROR:Bad state: 2num
Неизвестное состояние в программе прерывания.
IRWIN:ERROR:DMA boundary error - start address:num ending address:num
Устройство пытается переслать данные из буфера, который пересекает границу 64k.
Сообщения кассетного драйвера
CT:ERROR:Tape controller (type=name) not found
Не найден контроллер, определенный в файле 2/usr/sys/io/ctconf.asm .
CT:ERROR:Catridge tape is write protected
Перед использованием вы должны удалить маркер защиты записи с кассеты.
CT:ERROR:system too busy for efficient tape use
Не достаточно памяти пользователя, доступной для того, чтобы устройство могло работать.
CT:WARNING:attemped to free invalid buffer
Драйвер пытался освободить незадейственный буфер. Буфер должен быть задействован перед использованием.
Сообщения SCSI драйвера
scsi:ERROR:No controller response :num
Требуемый контроллер не представлен в SCSI канале num. Проверте ваши системные установку и схемы.
scsi:ERROR:CTLR num LUN num not attached
Требуемое устройство не представляет контроллера. Проверте вашу системную установку.
scsi:ERROR:CTLR num LUN num:invalid type <num>,
Требуемое устройство не является диском или лентой. Диск, лента и принтер в настоящее время поддерживаются только SCSI устройствами.
scsi:ERROR:CTLR num LUN num:(device not ready, ctlr, x);
Запрашиваемое устройство занято.
scsi:ERROR:adstrategy:device/type error 0xtype/0xtype
Внутренняя ошибка — открытое устройство — не диск, лента или принтер.
scsi:ERROR:adioctl:ADMODESENSE rc num host num unit num
Команда ioctl sense не завершилась, как ожидалось.
scsi:WARNING:adioctl:ADEXECUTE rc num host num unit num
Команда 2ioctl 0 execute не завершилась, как ожидалось.
scsi:INFO:adioctl:num reassigned
Cкверное отображение блока ioctl завершено (даваемое в парах).
scsi:WARNING:adsetparam:ADMODESENSE rc num host num unit num
Команда mode sense не завершилась, как ожидалось.
scsi:ERROR:adgetcdb:unsupported command num
Внутренняя ошибка — неожиданная команда.
scsi:WARNING:adintr:adapter num SR_DETECTED status=num, intr=num
Сброс SCSI обнаружен.
scsi:WARNING:Unexpected MBI status num
Неожиданное условие после прерывания.
scsi:WARNING:ad_sndcmd:unexpected port status=num
Не в состоянии послать команду адаптеру.
scsi:ERROR:adpresent:Adapter num internal failure:num
Адаптер возвращает сквернщу состояние инициализации.
scsi:ERROR:on disk dev=num/num ha=num lun=num block=num sector=num, cylinder/head=num/num
Сбой диска ввода/вывода.
scsi:ERROR:on tape ha=num lun=num hst num ust num AHA-1540 cmd :num [num. ] AHA-1540 sense :num [num. ]
Сбой ленты ввода/вывода; отсюда следуют эти сообщения:
Сообщения драйвера диска
disk:ERROR:Diskinfo table overflow
Слишком много дисков в употреблении — изменить реконфигурацию ядра для увеличения возможного количества дисков.
disk:ERROR:Invalid partition sector on hard disk
Главный нагрузочный блок на диске не распознается. Запустите fsck(2).
Сообщения драйвера гибких диков
floppy:WARNING:CMOS indicates no diskette drives installed
Неправильная конфигурация памяти — прогоните DOS SETUP.
floppy:WARNING:CMOS indicates diskette drive num not present
Неправильная конфигурация памяти — прогоните DOS SETUP.
floppy:ERROR: fdnum being formatted
Используется гибкий диск.
floppy:ERROR:disk is write protected
Чтение с диска невозможно, потому что он защищен.
floppy:ERROR:on dev (num/num), block=num cmd=num status=num
Сбой при вводе/выводе на гибком диске. Перед этим могло быть сообщение:
floppy:WARNING:cmd result error
Ошибка ввода/вывода на гибком диске.
Сообщения VPIX
VPIX:command completed unexpectedly
Процесс завершился преждевременно.
Сообщение драйвера OMTI
omti:ERROR:cannot allocate a GDT descriptor
Внутренняя ошибка — неудача подпрограммы ядра dscrallocc.
omti:ERROR:unit=num controller not configured
Внутренняя ошибка — приоткрытие драйвера не удалось идентифицировать тип диска.
omti:WARNING:already busy
Внутренняя ошибка — обращение процедуры старт omti к занятому дисководу.
omti:ERROR:unknown command(num), bp->b_cmd
Внутренняя ошибка — при старте omti встретилась нераспознанная команда.
omti:ERROR:command setup failed
Контроллер не смог принять команду.
omti:WARNING:non-omti interrupt (num), omti_status
Внутренняя ошибка — не предусмотрена команда для обработки сигнала прерывания.
omti:WARNING:unexpected omti interrupt (num), omti_status
Контроллер не послал сигнал прерывания, когда было получено прерывание.
omti:WARNING:still busy
После генерации сигнала прерывания контроллер все еще занят.
omti:ERROR:during omti_sense
Сигнал прерывания получен во время выполнения команды sens OMTI.
omti:ERROR:initialization failure
Во время инициализации обнаружена ошибка.
omti:ERROR:sense command setup failed
Контроллеру не удалось принять команду setup.
omti:ERROR:minor=num, block=num, errtype=num, code=num, unit=num [sector=num, cylinder/head=num/num,]<message>
Неудача при вводе/выводе на диске. В качестве <message> может быть выдано:
omti:ERROR:controller already in select state
Внутренняя ошибка — при выдаче команды контроллер занят.
omti:ERROR:cannot enter command phase
Контроллеру не удалось принять команду select.
omti:ERROR:C_D bit stuck off
Контроллеру не удалось индицировать готовность к команде.
omti:ERROR:OMTI_BUSY bit still stuck on
Контроллеру не удалось выполнить команду reset.
omti:INFO:unloading all requests
Подготовка к ручному сбросу, т. к. программный сброс не сработал.
omti:WARNING:colliding polling routines.
Внутренняя ошибка — несколько экземпляров omtipoll.
omti:ERROR:timed out
Ожидаемый сигнал прерывания не получен.
omti:ERROR:please use smft to modify disk parameters
Попытка писать характеристику диска непосредственно DIOWDISK ioctl.
Сообщения последовательного драйвера
serial:ERROR:Garbage or loose cable on dev num, port shut down
Одновременно получено слишком много сигналов прерывания. Проверте соединения.
Сообщения драйвера винчестера
wd:ERROR:on fixed disk dev=num/num block=num cmd=num status=num sector=num, cylinder/head=num/num
Неудача ввода/вывода на диске.
Сообщение драйвера событий
event:ERROR:event channel full
В очереди событий больше нет устройств.
event:ERROR:event table full
Все системные очереди событий открыты.
Сообщения драйвера клавиатуры
kb:ERROR:keyboard is an unknown mode
Клавиатура установлена ioctl() в неправильный режим. Разрешенные режимы клавиатуры — XT(0) и AT(1).
Message on Linux terminal
Few interesting commands which can be used to send the messages on other terminal or network:
This command is used to broadcast a message on all terminals.
This command is used to send message to a user & selected terminal of a user.
echo command can also used to send messages on selected terminal.
cat can also write on a selected terminal similar to echo command.
It can send the desktop notifications.
For e.g.: From gnome terminal,
From any terminal
Share this:
Like this:
Related posts
Configure syslog to print the Security violation alarm on user terminal
Configure syslog to print the Security violation alarm on user terminal (via Linux Explore)
Selinux disable temporarily or permanently
6 thoughts on “ Message on Linux terminal ”
What’s up friends, good article and fastidious urging commented at this place, I am actually enjoying by these.
What if a user is not logged in? WRITE says it cannot send unless the recipient is logged in 😛
Thanks for the article 😉
Hmm, 😉
That is Linux security 😛
Nice post. I learn something new and challenging on sites I stumbleupon on a daily basis.
It’s always exciting to read through articles from other authors and use something from their websites.
To use the command write, the user you’re writing to must allow other users to write on his terminal using the mesg command, like :
mesg y <– if you want to allow messages
mesg n
simply type :
mesg
to have the current state.