Abrt linux что это такое

Обновлено: 07.07.2024

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

Каждый сигнал имеет номер, и в этом списке они перечислены в порядку номеров. Таким образом HUP=1, INT=2 и т.д. Процесс может посылать эти сигналы другим процессам. Пользователи могут тоже самое.

Некоторые из сигналов использовались пользователями столь часто, что получили свои клавиатурные сокращения. Для просмотра этих сокращений посмотрите четыре последние строки вывода команды stty -e:

Символ "^" означает что вы должны нажать клавишу "ctrl", а затем указанную за ним букву. Обратите внимание, что три сигнала были привязаны к управляющим последовательностям:

  • ^C привязан к сигналу INT (сигнал 2)
  • ^\ привязан к сигналу QUIT (сигнал 3)
  • ^Z привязан к сигналу TSTP (сигнал 18, хотя здесь он называется susp)

Не путайте слово "kill" в выводе команды stty с сигналом KILL (сигнал 9). Комбинация ^U удаляет строку, а не шлет сигнал номер 9. Для того что бы в этом убедиться, напечатайте в командной оболочке длинную строку, а затем нажмите ^U.

Но как послать сигнал, который не имеет соответствующей комбинации клавиш? Используйте для этого команду kill.

Есть пара способов использования команды kill. Если вы просто напечатаете:

то по умолчанию процессу с идентификатором PID будет послан сигнал TERM. Если вы хотите послать какой-нибудь другой сигнал, то в команде укажите его название или номер:

Таким образом команды

эквивалентны. Не забывайте, что в UNIX имеет значение регистр набранных команд, если вы напечатаете:

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

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

То, что на вашем терминале появится приглашение интерпретатора команд, свидетельствует о том, что посланный вами сигнал INT сработал.

Опять выполните ту же самую команду find, но в этот раз пошлите сигнал 3, нажав на клавиатуре "Ctrl+\":

Если теперь вы вернетесь на предыдущий терминал и посмотрите список файлов в каталоге, среди прочего вы обязательно найдете файл more.core. Обычно вам никогда не потребуется посылать процессу сигнал номер 3, если конечно вы не программист, который знает как использовать отладчик ядра. Я включил этот пример в статью для того что бы показать разницу между сигналами 2 и 3. Удаляйте core-файлы без опаски.

Межпроцессное взаимодействие (в оригинале используется термин "межпроцессные коммуникации" - прим. переводчика) практически ни чем не отличается от любых других видов коммуникаций: вы или какой-нибудь процесс можете послать сигнал в надежде на определенный результат, однако процесс получающий этот сигнал распоряжается с ним "на свое усмотрение". Помните, что процессы - это всего лишь запущенные программы. Большинство программ используют процедуры "обработки сигналов", применяемые для того, что бы решать что и как надо делать с поступившими сигналами в данный момент времени. Обычно, если вы посылаете процессу какой-нибудь из сигналов останавливающих выполнение программы, процедура обработки сигналов этого процесса пытается корректно закрыть все используемые программой файлы для предотвращения потери данных после останова. В некоторых случаях обработчик сигналов может просто проигнорировать поступивший процессу сигнал и отклонить запрос на останов программы (обычно так поступают зависшие программы, которые на момент поступления сигнала уже не работают должным образом - прим. переводчика).

Однако (к счастью - прим. переводчика), некоторые сигналы не могут быть проигнорированы программой. Это например девятый и семнадцатый сигналы. Представим, что вы хотите остановить процесс который вы некоторое время назад запустили. Воспользовавшись связкой команды ps и grep, вы узнали PID процесса, а затем при помощи команды kill послали ему сигнал TERM, а затем решили проверить остановлен ли процесс повторив команду ps:

Однако при повторе команды ps вы опять обнаружили этот процесс в списке, а это значит, что по каким-то причинам сигнал TERM был проигнорирован. Любая из этих двух команд исправит ситуацию:

Если вы теперь повторите команду ps, то вы должны будете получить пустой список, что свидетельствует об успешном останове процесса.

Вы можете спросить: "Почему бы всегда не посылать процессам сигнал 9, если он не может быть игнорирован?". Дело в том, что сигнал 9 на самом деле просто "убивает" процесс, не давая ему времени на корректное сохранение всех обработанных данных, что означает, что при применении сигнала 9 могут быть потеряны данные (никогда не применяйте сигнал номер 9 без крайней на то необходимости - прим. переводчика). Намного лучше попробовать для начала послать процессу какой-нибудь другой сигнал останова, а сигнал номер 9 иметь "про запас" для процессов упрямо игнорирующих другие сигналы. Не забывайте так же, что если вы работаете от имени обычного пользователя, то вы сможете посылать сигналы только процессам, владельцем которых являетесь. Суперпользователь root может посылать сигналы любым процессам.

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

Продемонстрируем это. Войдите в систему на другом терминале и введите команду ps:

В этом примере я вошел в систему с терминалов 0, 1, 2, 3. Я запустил команду ps с консоли (терминал 0 по совместительству выполняет роль системной консоли - прим. переводчика), на первом терминале запущена оболочка командного процессора, на втором - запущен браузер lynx и на третьем у меня запущен сеанс X Window. И так я являюсь владельцем 10 процессов. Если в команде kill я воспользуюсь идентификатором процесса (PID) равным -1, я отправлю указанный в команде сигнал всем принадлежащим мне процессам. так попробуем послать сигнал TERM таким образом:

А теперь проверим результаты, воспользовавшись командой ps:

Обратите внимание - мы остановили шесть процессов, однако четыре оставшиеся проигнорировали сигнал TERM. Давайте будем более агрессивными:

Если вы "пройдетесь" по тем четырем терминалам, на которых выполнялись ваши программы, то на трех из них вы увидите приглашение войти в систему. Последняя команда kill уничтожила все процессы, за исключением своего родительского процесса, т.е. командного интерпретатора C shell, в котором вы набрали команду kill (так произошло потому, что структура процессов в UNIX древовидна и каждый процесс должен иметь своего родителя - прим. переводчика).

Обратите внимание, что если вы допустите ошибку при наборе команды и напишете:

Дело в том, что -1 это специальный идентификатор процесса, который обозначает "все процессы", а 1 это идентификатор процесса с именем init. Только суперпользователь может останавливать процесс init. К тому же суперпользователь должен останавливать процесс init только при условии того, что он знает что делает.

Теперь давайте поглядим что произойдет, если мы повторим то же упражнение, но только от имени суперпользователя. Для начала на моем тестовом компьютере (где выполняются следующие программы: apache, mysql, squid, nfs и т.п.) я выполню команду ps:

Теперь я пошлю сигнал KILL специальному идентификатору -1 от имени суперпользователя:

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

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

Это является одной из причин, по которой только суперпользователь может выполнять команды reboot и halt. Когда одна из этих команд запускается на выполнение, то всем процессам рассылается сигнал TERM, для того что бы дать им шанс для сохранения данных, поскольку за сигналом TERM, через некоторое время, следует сигнал KILL, который посылается для того что бы гарантированно уничтожить все процессы.

В следующей статье я продолжу эту тему, заострив внимание на процессах init и getty.

Итак, вы успешно установили дистрибутив Linux Mint, Ubuntu или Fedora Workstation, провели его оптимизацию, но он все равно медленно загружается. Конечно же, можно просто смириться с этим, ведь время загрузки системы не является определяющим фактором при работе с ней, но если вы обладаете опытом работы с Linux и не боитесь использовать терминал, вы можете провести небольшую дополнительную оптимизацию процесса ее загрузки, заключающуюся в отключении неиспользуемых системных служб. Так как во всех упомянутых дистрибутивах с недавнего времени используется менеджер инициализации systemd, процесс их настройки будет практически идентичным. Различия в данном случае будут заключаться в наборе активированных по умолчанию системных служб.

1. Ознакомление со списком активированных системных служб

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

systemctl list-unit-files --type=service | grep enabled

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

В зависимости от используемого дистрибутива, данный список может быть достаточно длинным, поэтому он был сокращен. Вам придется деактивровать лишь те службы, которые не используются в вашем случае. Но что делать в том случае, если вы не знаете назначения каждой из служб? Ну, вы можете просто воспользоваться приведенным ниже списком служб, которые могут быть максимально безболезненно деактивированы.

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

2. Деактивация системных служб

Для деактивации системной службы следует использовать последовательность из двух команд:

sudo systemctl stop <имя службы>.service
sudo systemctl disable <имя службы>.service

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

sudo systemctl mask <имя службы>.service

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

systemctl status <имя службы>.service

В результате исполнения данной команды вы получите аналогичный вывод:

Из данного вывода очевидно, что служба активирована (enabled во второй строке), а также активна и исполняется (active (running) в третьей строке).

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

3. Восстановление работоспособности системных служб

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

sudo systemctl unmask <имя службы>.service
sudo systemctl enable <имя службы>.service
sudo systemctl start <имя службы>.service

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

4. Системные службы, которые стоит деактивировать

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

A. Планировщики событий

  • anacron-resume.service
  • anacron.service
  • cron.service
  • atd.service

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

B. Службы поддержки печати

Данные службы ответственны за обнаружение и работу с принтерами. Если у вас нет принтера, можете смело деактивровать их.

C. Служба поддержки широкополносных беспроводных устройств

Данная служба позволяет использовать 2G/3G/4G модемы. Если вы не используете подобные устройства, можете деактивирвать ее.

D. Службы поддержки логических виртуальных томов и RAID-массивов

  • lvm2-monitor.service
  • dmraid-activation.service
  • iscsi.service
  • mdmonitor.service
  • multipathd.service

Данные службы должны использоваться лишь в том случае, если при установке системы жесткие диски были использованы для создания логических виртуальных томов или RAID-массивов. Если вы не создавали их (что рекомендуется), вам не понадобятся все эти службы.

E. Служба поддержки устройств Bluetooth

Данная служба позволяет работать с устройствами Bluetooth. Если вы не используете таких устройств, можете деактивировать ее.

F. Службы отправки информации о системных сбоях

  • whoopsie.service
  • abrt-ccpp.service
  • abrt-oops.service
  • abrt-vmcore.service
  • abrt-xorg.service
  • abrtd.service

Данные службы предназначены для сбора информации о системных сбоях и ее передачи разработчикам дистрибутива. Если вы не желаете активно участвовать в процессе разработки дистрибутива, вы можете деактивировать данные службы.

G. Служба для людей с ограниченными возможностями

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

H. Служба обнаружения сетевых устройств

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

I. Службы поддержки виртуальных машин

  • libvirtd.service
  • spice-vdagentd.service
  • vgauthd.service
  • vmtoolsd.service

Данные службы используются для работы с виртуальными машинами (обычно посредством приложения Boxes). Если вы не используете виртуальные машины для запуска операционных систем, вы можете деактивировать их.

После деактивации описанных системных служб следует перезагрузить компьютер. Теперь он должен немного быстрее загружаться.

В Unix-подобных операционных системах, таких как Linux, сигналы программные прерывания. Они предоставляют пользователю (или процессу) возможность напрямую общаться с процессом.

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

  • Описание
  • Поиск системных сигналов
  • Сигналы в Linux
  • Примеры: отправка сигналов
  • Связанные команды
  • Справка по командам Linux

Описание

Сигналы процесса были разработаны как часть UNIX в 1970-х годах. Они используются во всех современных UNIX-подобных операционных системах, включая Linux, BSD и macOS X.

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

Сигналы можно отправлять с убийство команда, названная в честь сигнала по умолчанию (СИГКИЛЛ), который инструктирует ОС принудительно завершить процесс, прежде чем делать что-либо еще.

Названия сигналов обычно сокращаются без их SIG префикс, например, "KILL", включая аргументы команды убийство.

Поиск сигналов, доступных в вашей системе

Сигналы определены в системной библиотеке signal.h. Чтобы просмотреть сигналы, используемые вашей операционной системой, откройте терминал и запустите мужской сигнал или же человек 7 сигнал.

Сигналы в Linux

Сигналы, не поддерживаемые Linux

Следующие сигналы могут использоваться другими системами, такими как BSD, но интерпретируются как SIGUNUSED в Linux.

SIGEMTВ ЕМТ сигнал отправляется процессу, когда происходит ловушка эмулятора. Не используется в Linux.
СИГИНФОВ ИНФОРМАЦИЯ сигнал отправляется процессу при получении запроса состояния от управляющего терминала. Не используется в Linux
СИГЛОСТВ ПОТЕРЯННЫЙ сигнал отправляется процессу при потере блокировки файла. Не используется в Linux.
SIGSYSВ SYS сигнал отправляется процессу, когда он передает неверный аргумент системному вызову. Не используется в Linux.

Отправка сигналов с клавиатуры

Сигналы могут отправляться с клавиатуры. Ниже перечислены несколько стандартных значений по умолчанию. Комбинации клавиш по умолчанию для отправки сигналов прерывания могут быть определены с помощью команды stty.

Ctrl-Cпослать SIGINT (Прерывание). По умолчанию это приводит к завершению процесса.
Ctrl-Zпослать SIGTSTP (Приостановить). По умолчанию это заставляет процесс приостанавливать все операции.
Ctrl- послать SIGQUIT (Уволиться). По умолчанию это приводит к немедленному завершению процесса и дампу ядра.
Ctrl-Tпослать СИГИНФО (Информация). По умолчанию при этом операционная система отображает информацию о команде. Поддерживается не во всех системах.

Сигналы в реальном времени

Сигналы в реальном времени - это набор сигналов без определенной цели, которые программисты могут использовать в своем программном обеспечении по своему усмотрению. Два названия сигналов, SIGRTMIN и SIGRTMAX, определите минимальное и максимальное количество сигналов для сигналов реального времени. Например, программист может использовать номер сигнала как SIGRTMIN + 3 для обозначения четвертого номера сигнала реального времени.

Примеры: отправка сигналов с помощью команды kill

В убийство команда отправляет сигналы процессам. Ваша оболочка может иметь встроенную версию убийство, который заменяет версию, установленную на / bin / kill. Две версии имеют немного разные параметры, но основные функции одинаковы. Следующие ниже примеры можно запустить с использованием любой версии убийство.

Сигнализируемый процесс называется PID (ID процесса). Если вы не уверены в идентификаторе процесса, вы можете найти его с помощью пс команда, например ps -aux.

убить 123 456 789

Убить три процесса: PID 123, 456, и 789.

убить -15 1234 5678

Номер сигнала отправки 15 (СРОК) к процессам 1234 и 5678.

kill -TERM 1234 5678

То же, что и предыдущая команда.

Список всех доступных сигналов. Пример вывода:

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGTERM 16) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWRIN 31) SIGPWRINTM 35) SIGPWRINTM 35) SIGPWRINTM 35) SIGPWRINTM 35) 1 36) SIGRTMIN + 2 37) SIGRTMIN + 3 38) SIGRTMIN + 4 39) SIGRTMIN + 5 40) SIGRTMIN + 6 41) SIGRTMIN + 7 42) SIGRTMIN + 8 43) SIGRTMIN + 9 44) SIGRTMIN + 10 45) SIGRTMIN + 11 46) SIGRTMIN + 12 47) SIGRTMIN + 13 48) SIGRTMIN + 14 49) SIGRTMIN + 15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX- 9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX

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

Связанные команды

убийство - Завершить процесс.
stty - Измените настройки терминальной линии.


Сигналы использовались еще с Bell Labs UNIX в 1970 и сегодня официально определено стандартом POSIX. Когда сигнал поступает на процесс, операционная система прерывает нормальный поток выполнения процесса и обеспечивает уведомление.

Команды kill и сигналы

Вы можете просмотреть все сигналы с помощью команды:

kill -l на macos

kill -l на macos

kill -l на centos

kill -l на centos

kill -l на Debian

kill -l на Debian

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

Основные сигналы

Следующие сигналы являются частью стандарта POSIX. Каждый сигнал макрос, определенный в <signals.h> Файл заголовка системы. Они, как правило, сокращенны, без их SIG- префикса; например SIGHUP часто называют просто как HUP.

SIGKILL – сигнал SIGKILL заставляет процесс прекратить выполнение своей работы немедленно. Программа не может игнорировать этот сигнал. Несохраненный прогресс будет потерян.

Синтаксис команды такой:

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

А если знаете конкретное приложение (например apache), то можно отсеять ненужное и вывести все процессы по данной службе:

И это отобразит все запущенные приложения вместе с его PID-ом(ами).

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

Перезагурзить конфигурационные файлы или перезапуск утилит:

Особенно полезными сигналы включают HUP, INT, kill, STOP, CONT, и 0.

-s signal_name
Символическое имя сигнала, задающее сигнал для отправки сигнала не по умолчанию.

-l [exit_status]
Если операнд не указан, то показать имена сигналов; В противном случае, написать название сигнала, соответствующего exit_status.

-signal_name
Символическое имя сигнала, задающее сигнал для отправки в TERM по умолчанию.

-signal_number
Неотрицательное десятичное целое, задающее сигнал для отправки в TERM по умолчанию.

Следующие PID-ы, имеют особое значение:
-1 Если суперпользователь, то транслирует сигнал всем процессам; в противном случае вещает на все процессыbelong-
ing для пользователя.

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

PKill

Так как он соответствует шаблону регулярного выражения, вы также можете ввести часть имени процесса, например:

pgrep -l

Killall

В Gnome, вы можете перезапустить Nautilus с помощью команды:

xkill

Еще сигналы которые используются

SIGABRT

Этот сигнал посылает сигнал процессу, чтобы прервать операцию. ABRT как правило, направлен на сам процесс, когда он вызывает функцию abort() языка программирования С, чтобы сигнализировать аварийное завершение, но он может быть направлен из любого процесса, как и любой другой сигнал.

SIGALRM, SIGVTALRM и SIGPROF

ALRM, VTALRM и / или сигнал PROF отправляется процессу, когда лимит времени, указанный при вызове функции сигнализации (например, setitimer) истекает.

ALRM

Посылается, когда настоящее время или часы с течением времени.

VTALRM

Посылается, когда процессорное время, используемое в процессе истечет.

PROF

Посылается, когда процессорное время, используемое процессом и системы от имени процесса истекает.

SIGBUS

BUS сигнал посылает процессу, когда это приводит к ошибке шины. Условия, которые приводят к данному сигналу, например, неправильное выравнивание доступа к памяти или отсутствие физического адреса.

SIGCHLD

SIGCONT

Сигнал CONT инструктирует операционную систему, и дает сигнал перезапустить процесс который ранее был приостановлен в режиме СТОП или сигнала TSTP. Одной из важных особенностей этого сигнала является контроль работы в оболочке Unix.

SIGFPE

Сигнал FPE посылает процессу, когда он выполняет ошибочное, арифметические срабатывания, например, такие как деление на ноль.

SIGHUP

SIGILL

ILL сигнал, посылаемый процессу при попытке выполнить вредоносные, неизвестные или привилегированные команды (инструкции).

SIGINT

SIGKILL

Сигнал KILL посылает процессу чтобы он немедленно прекратил работу. В отличие от SIGTERM и SIGINT этот сигнал не может быть захвачен или проигнорирован и принимающий процесс не может выполнить какие-либо очистку после получения этого сигнала.

SIGPIPE

Сигнал PIPE посылается процессу, когда он пытается записать в трубе без процесса, подключенного к другому концу.

SIGQUIT

QUIT сигнал посылается процессу от его управляющего терминала, когда пользователь запрашивает процесс выполнения дампа.

SIGSEGV

Сигнал SEGV отправляется в процесс, когда он делает недопустимую ссылку виртуальной памяти или сбой сегментации, то есть когда он выполняет нарушение сегментации.

SIGSTOP

STOP сигнал указывает ОС, чтобы остановить процесс для последующего возобновления.

SIGTERM

SIGTSTP

Сигнал TSTP посылается в процесс его управляющего терминала и говорит ему, что нужно временно приостановить. Это обычно инициируется пользователем нажатием Control-Z. В отличие от SIGSTOP, этот процесс может зарегистрировать обработчик сигнала или чтобы игнорировать сигнал.

SIGTTIN и SIGTTOU

В TTIN и TTOU сигналы посылаются процессу, когда он пытается прочитать или записать соответственно с (tty) терминала на заднем плане. Как правило, этот сигнал может быть получен только с помощью процессов находящихся под контролем рабочей панели; демоны не имеют управляющие терминалы и никогда не должны получать этот сигнал.

SIGUSR1 и SIGUSR2

Сигналы USR1 и USR2 отправляются процессу и указывают определенные пользователем условия.

SIGPOLL

Сигнал POLL отправляется в процессе, когда происходит асинхронное событие ввода / вывода.

SIGSYS

Сигнал SYS отправляется в процессе, когда он пропускает плохой аргумент для системного вызова.

SIGTRAP

SIGURG

Сигнал URG отправляется процессу, когда socket имеет срочные или вне диапазона данных, доступных для чтения.

SIGXCPU

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

SIGXFSZ

Сигнал XFSZ отправляется в процессе, когда файл вырастает (превышает заданное значение), чем максимально допустимое значение.

SIGRTMIN to SIGRTMAX

Разные сигналы

Следующие сигналы не стандартизированы POSIX, но иногда используются на некоторых системах.

SIGEMT

Сигнал ЕМТ отправляется в процессе, когда происходит прерывание эмулятора.

SIGINFO

Сигнал INFO отправляется в процессе, когда запрос статуса получен от управляющего терминала.

SIGPWR

Сигнал PWR отправляется в процессе, когда система испытывает сбой питания.

SIGLOST

SIGWINCH

Сигнал WINCH отправляется в процессе, когда его управляющий терминал меняет свой размер.

Отправка сигналов с клавиатуры

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

CTRL-C

CTRL-Z

CTRL-\

CTRL-T

вывод

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

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