Jump to content

запуск

запуск
Оригинальный автор(ы) Дэйв Зажицки
Разработчик(и) Apple Инк.
Первоначальный выпуск 29 апреля 2005 г .; 19 лет назад ( 29 апреля 2005 г. )
Написано в С
Операционная система macOS , FreeBSD , iOS , watchOS
Тип инициализации Демон
Лицензия Проприетарное программное обеспечение (ранее APSL , а затем Apache License 2.0 )
Веб-сайт открытый исходный код .яблоко /tarballs /запуск /  Edit this on Wikidata

launchd — это инициализации и управления службами операционной системы, демон созданный Apple Inc. как часть macOS в стиле BSD для замены init и SystemStarter . Были попытки портировать launchd на FreeBSD и производные системы.

Компоненты

[ редактировать ]

В системе launchd есть две основные программы: launchd и launchctl.

launchd управляет демонами как на системном, так и на пользовательском уровне. Подобно xinetd, launchd может запускать демоны по требованию. Подобно watchdogd, launchd может отслеживать работу демонов, чтобы убедиться, что они продолжают работать. launchd также заменил init на PID 1 в macOS и в результате отвечает за запуск системы во время загрузки.

Файлы конфигурации определяют параметры служб, запускаемых launchd. , хранящиеся в подкаталогах LaunchAgents и LaunchDaemons папок библиотеки, Файлы на основе списка свойств содержат около тридцати различных ключей, которые можно установить. Сам launchd не знает этих файлов конфигурации и не имеет возможности их читать — за это отвечает «launchctl».

launchctl — это приложение командной строки, которое взаимодействует с launchd с помощью IPC и знает, как анализировать файлы списка свойств , используемые для описания заданий launchd, сериализуя их с использованием специализированного словарного протокола, который понимает launchd. launchctl можно использовать для загрузки и выгрузки демонов, запуска и остановки заданий, контролируемых launchd, получения статистики использования системы для launchd и его дочерних процессов, а также установки параметров среды.

launchd имеет две основные задачи. Первый — загрузка системы, второй — загрузка и обслуживание служб.

Вот упрощенное представление запуска системы Mac OS X Tiger на PowerPC Mac (на Intel Mac EFI заменяет Open Firmware и boot.efi заменяет BootX ):

  1. Открытая прошивка активируется, инициализирует оборудование, а затем загружает BootX.
  2. BootX загружает ядро, вращает курсор-вертушку и загружает все необходимые расширения ядра (кексы).
  3. Ядро загружает launchd.
  4. launchd работает /etc/rc, различные скрипты, которые сканируют /System/Library/LaunchDaemons и /Library/LaunchDaemons, вызывая launchctl для plists по мере необходимости, затем launchd запускает окно входа в систему.

На шаге 4 сценарии запуска просматривают несколько разных каталогов в поисках заданий для запуска. Сканируются два разных каталога:

  1. Каталоги LaunchDaemons содержат элементы, которые будут запускаться от имени пользователя root, обычно это фоновые процессы.
  2. Каталоги LaunchAgents содержат задания, называемые приложениями-агентами, которые будут запускаться от имени пользователя или в контексте области пользователя. Это могут быть сценарии или другие элементы переднего плана, и они могут даже включать пользовательский интерфейс.

Все эти каталоги хранятся в типичных каталогах библиотеки Mac OS X.

launchd сильно отличается от SystemStarter тем, что он может не запускать все демоны во время загрузки. Ключевой особенностью launchd, как и xinetd, является идея запуска демонов по требованию. Когда launchctl просматривает списки заданий во время загрузки, он просит launchd зарезервировать и прослушивать все порты, запрошенные этими заданиями. Если это указано в списке с помощью ключа «OnDemand», демон в данный момент фактически не загружается. Скорее, launchd будет прослушивать порт, запускать демон, когда это необходимо, и закрывать его, когда он больше не нужен. После загрузки демона launchd будет отслеживать его и при необходимости проверять его работу. В этом смысле он похож на watchdogd и разделяет требование watchdogd о том, что процессы не пытаются самостоятельно разветвляться или демонизироваться. Если процесс переходит в фоновый режим, launchd потеряет его из виду и попытается перезапустить.

Следовательно, Mac OS X Tiger загружается намного быстрее, чем предыдущие версии. Системе необходимо только зарегистрировать демоны, которые должны быть запущены, и фактически не запускать их до тех пор, пока они не потребуются. Фактически, индикатор выполнения, который появляется во время загрузки, — это всего лишь приложение-плацебо (названное WaitingForLoginWindow [1] ), что на самом деле не показывает ничего, кроме течения времени.

Самая сложная часть управления во время загрузки launchd — это зависимости. SystemStarter имел очень простую систему зависимостей, в которой использовались ключи «Использует», «Требует» и «Предоставляет» в списке элемента автозагрузки. Существует две основные стратегии при создании зависимостей launchd на Tiger: IPC позволяет демонам общаться между собой для разработки зависимостей, или демоны могут отслеживать файлы или пути на предмет изменений. Использование IPC гораздо более тонкое, чем использование ключей SystemStarter, и требует больше усилий от разработчика, но может [ нужна ссылка ] приводят к более чистым и быстрым запускам. SystemStarter все еще поддерживался до OS X Mountain Lion , но был удален в OS X Yosemite .

запускctl

[ редактировать ]

В launchd управление услугами централизовано в launchctl приложение.

Сам по себе launchctl может принимать команды из командной строки, из стандартного интерфейса или работать в интерактивном режиме. Имея права суперпользователя , launchctl можно использовать для внесения изменений в глобальном масштабе. Набор команд launchctl можно сделать постоянным при сохранении в /etc/launchd.conf . для каждого пользователя , но он не поддерживается ни в одной существующей версии macOS. ~/.launchd.conf ( Похоже, что рассматривался файл [2] )

launchctl взаимодействует с launchd через механизм IPC, специфичный для Mach .

Список недвижимости

[ редактировать ]

Список свойств (plist) — это тип файла, который launchd использует для конфигурации программы. Когда launchd сканирует папку или задание отправляется с помощью launchctl, он считывает файл plist, который описывает, как программа должна запускаться.

Список часто используемых клавиш приведен ниже. Все ключи являются необязательными, если не указано иное. Полный список см. на странице руководства Apple. launchd.plist. [3]

Ключ Тип Описание
LabelНить Название работы. По соглашению метка задания совпадает с именем файла plist, но без расширения .plist . Необходимый .
ProgramНить Путь к исполняемому файлу. Полезно для простых запусков. По крайней мере один из Program или ProgramArguments требуется .
ProgramArgumentsМассив строк Массив строк, представляющий команду UNIX. Первая строка обычно представляет собой путь к исполняемому файлу, а последние строки содержат параметры или параметры. По крайней мере один из Program или ProgramArguments требуется .
UserNameНить
(по умолчанию root или текущий пользователь)
Задание будет запущено от имени данного пользователя, который может (а может и не быть) пользователем, отправившим его в launchd.
OnDemand

(Устарело с версии 10.5)

логическое значение
(по умолчанию YES)
Устарело с версии 10.5 с более мощной KeepAlive вариант. флаг Логический , определяющий, выполняется ли задание непрерывно или нет.
RunAtLoadлогическое значение
(по умолчанию NO)
Логический флаг, определяющий , запускается ли задача сразу после загрузки задания в launchd.
StartOnMountлогическое значение
(по умолчанию NO)
Логический флаг , определяющий, запускается ли задача при монтировании новой файловой системы.
QueueDirectoriesМассив строк Следите за каталогом на предмет новых файлов. Каталог должен быть пустым с самого начала и должен быть возвращен в пустое состояние перед QueueDirectories снова запустит свою задачу.
WatchPathsМассив строк Следите за путем к файловой системе на предмет изменений. Это может быть файл или папка.
StartIntervalЦелое число Планирует выполнение задания по повторяющемуся расписанию. Указывает количество секунд ожидания между запусками.
StartCalendarIntervalСловарь целых чисел
или
Массив словарей целых чисел
Планирование работы. Синтаксис аналогичен cron .
RootDirectoryНить Перед выполнением задание будет помещено в этот каталог.
WorkingDirectoryНить Перед выполнением задание будет перенаправлено в этот каталог.

StandardInPath,
StandardOutPath,
StandardErrorPath

Нить Ключи для определения файлов ввода и вывода для запускаемого процесса.
LowPriorityIOлогическое значение Сообщает ядру, что эта задача имеет низкий приоритет при выполнении операций ввода-вывода файловой системы.
AbandonProcessGroupлогическое значение
(по умолчанию NO)
Логический флаг, определяющий, будут ли подпроцессы, запущенные из задачи , запущенной с помощью launchd, завершаться после завершения задачи. Полезно, когда кратковременная задача запускает долгоживущую подзадачу, но может привести к зомбированию процессов .
SessionCreateлогическое значение
(по умолчанию NO)
Логический флаг , определяющий, будет ли создан сеанс безопасности для задачи и ее подпроцессов.

Протокол активации сокета

[ редактировать ]

Имя каждого ключа в разделе «Сокеты» будет помещено в среду задания при его запуске, а файловый дескриптор этого сокета будет доступен в этой переменной среды. Это отличается от активации сокета в systemd тем, что имя определения сокета внутри конфигурации задания жестко закодировано в приложении. Этот протокол менее гибок, хотя он не требует, как это делает systemd, от демона жестко запрограммировать начальный дескриптор файла (по состоянию на 2014 год это 3). [4]

Программное обеспечение было разработано и написано Дэйвом Зажицки из Apple . Компания планировала заменить в средах OS X все следующее :

— и большинство из этих вещей были заменены, когда launchd был представлен в Mac OS X v10.4 (Tiger).

В 2005 году Р. Тайлер Крой портировал launchd на FreeBSD в рамках проекта Google Summer of Code. Его нельзя было запустить с PID 1 (только инициализация сеанса), и он не часто использовался на этой платформе. [5]

В 2006 году дистрибутив Ubuntu Linux рассматривал возможность использования launchd. Этот вариант был отклонен, поскольку исходный код подпадал под действие лицензии Apple Public Source License , что описывалось как «неизбежная проблема с лицензией». [6] Вместо этого Ubuntu разработала и перешла на собственный инструмент управления сервисами Upstart .

В августе 2006 года Apple повторно лицензировала под запуск версии 2.0 лицензией Apache, чтобы облегчить принятие ее другими разработчиками с открытым исходным кодом. [7] Большинство дистрибутивов Linux используют systemd или Upstart или продолжают с init , а BSD также продолжают с init.

В декабре 2013 года Р. Тайлер Крой объявил о своем намерении возобновить работу над портом launchd для FreeBSD, и активность его репозитория openlaunchd на GitHub впоследствии возросла. [8]

Последний раз Wayback Machine захватила область Mac OS Forge для запуска в июне 2012 года. [9] а самая последняя версия с открытым исходным кодом от Apple была 842.92.1 в коде для OS X 10.9.5.

В 2014 году в OS X 10.10 и iOS 8 Apple перенесла код для launchd в libxpc с закрытым исходным кодом. [10]

В августе 2015 года Джордан Хаббард и Кип Мэйси анонсировали NextBSD , которая основана на ядре FreeBSD-CURRENT с добавлением Mach IPC, Libdispatch, notified, asld, launchd и других компонентов, полученных из Darwin, открытого исходного кода Apple для OS X.

История выпусков Apple с открытым исходным кодом

[ редактировать ]
Версия Лицензия Включено в macOS версии Включенные Apple Developer Tools версии
запускd 106 Лицензия Apple на общедоступный исходный код [11]
запуск 106.3 Лицензия Apple на общедоступный исходный код [14]
запускd 106.10 Лицензия Apple на общедоступный исходный код [19]
  • Mac OS X 10.4.4.x86 [20]
  • Mac OS X 10.4.5.x86 [21]
запуск 106.13 Лицензия Apple на общедоступный исходный код [22]
  • Mac OS X 10.4.6.ппк [23]
  • Mac OS X 10.4.6.x86 [24]
запуск 106.14 Лицензия Apple на общедоступный исходный код [25]
  • Mac OS X 10.4.7.ппк [26]
  • Mac OS X 10.4.7.x86 [27]
  • Mac OS X 10.4.8.ппк [28]
  • Mac OS X 10.4.9.ппк [29]
  • Mac OS X 10.4.10.ппк [30]
  • Mac OS X 10.4.11.ппк [31]
запускd 106.20 Лицензия Apple на общедоступный исходный код [32]
  • Mac OS X 10.4.8.x86 [33]
  • Mac OS X 10.4.9.x86 [34]
  • Mac OS X 10.4.10.x86 [35]
  • Mac OS X 10.4.11.x86 [36]
  • Инструменты разработчика 2.4 [37]
запуск 152 Лицензия Апач 2.0 [38]
запускd 257 Лицензия Апач 2.0 [39]
  • Инструменты разработчика 3.1 [42]
  • Инструменты разработчика 3.1b [43]
  • Инструменты разработчика 3.1.1 [44]
  • Инструменты разработчика 3.1.2 [45]
  • Инструменты разработчика 3.1.3 [46]
  • Инструменты разработчика 3.1.4 [47]
запуск 258.1 Лицензия Апач 2.0 [48]
запуск 258.12 Лицензия Апач 2.0 [50]
запускd 258.18 Лицензия Апач 2.0 [53]
запускd 258.19 Лицензия Апач 2.0 [55]
запускd 258.22 Лицензия Апач 2.0 [57]
запускd 258.25 Лицензия Апач 2.0 [59]
запускd 328 Лицензия Апач 2.0 [61]
  • Инструменты разработчика 3.2.1 [65]
  • Инструменты разработчика 3.2.2 [66]
  • Инструменты разработчика 3.2.3 [67]
  • Инструменты разработчика 3.2.4 [68]
запускd 329.3 Лицензия Апач 2.0 [69]
запуск 329.3.1 Лицензия Апач 2.0 [71]
  • Инструменты разработчика 3.2.5 [73]
  • Инструменты разработчика 3.2.6 [74]
запуск 329.3.2 Лицензия Апач 2.0 [75]
запуск 329.3.3 Лицензия Апач 2.0 [77]
запускd 392.18 Лицензия Апач 2.0 [81]
запускd 392.35 Лицензия Апач 2.0 [84]
запускd 392.36 Лицензия Апач 2.0 [86]
запускd 392.38 Лицензия Апач 2.0 [88]
запускd 392.39 Лицензия Апач 2.0 [90]
запускd 442.21 Лицензия Апач 2.0 [92]
запуск 442.26.2 Лицензия Апач 2.0 [95]
запуск 842.1.4 Лицензия Апач 2.0 [100]
запуск 842.90.1 Лицензия Апач 2.0 [103]
запуск 842.92.1 Лицензия Апач 2.0 [106]

См. также

[ редактировать ]
  1. ^ «Детали тигра» . Дерзкий огненный шар . Окно ожидания входа в систему . Проверено 23 февраля 2020 г.
  2. ^ Страница руководства Mac OS X для launchd.conf(5)
  3. ^ «Страница руководства Mac OS X для launchd.plist(5)» . веб.архив.орг . 26 августа 2009 года . Проверено 15 июля 2024 г.
  4. ^ Little-Big-h (30 января 2014 г.). "запущенный узел" . Проверено 10 апреля 2014 г.
  5. ^ «Запущен» . Вики FreeBSD . Проверено 8 декабря 2013 г.
  6. ^ «ЗаменаИнит» . УбунтуВики . Проверено 2 июля 2007 г.
  7. ^ Прабхакар, Эрнест (7 августа 2006 г.). «Apple открывает: ядро, Mac OS Forge, iCal Server, Bonjour, Launchd» . darwin-dev (список рассылки) . Проверено 25 марта 2023 г.
  8. ^ Крой, Р. Тайлер. «Самая царапающая борода или FreeBSD на моем Thinkpad X200» . unethicalblogger.com . Архивировано из оригинала 13 ноября 2017 года . Проверено 8 декабря 2013 г. {{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  9. ^ "запустил" . Мак ОС Фордж . Apple Inc. Архивировано из оригинала 9 июня 2012 года . Проверено 3 сентября 2016 г.
  10. ^ Левин, Джонатан (2014). «Запущен – к вашим услугам!» (PDF) . п. 32 . Проверено 3 сентября 2016 г. … 10.10: перенесен на libxpc 559 (560 в iOS 8) — Исходный код пока недоступен — и, возможно, никогда не будет — Libxpc — это проект с закрытым исходным кодом…
  11. ^ «файл лицензии launchd 106» .
  12. ^ «Mac OS X 10.4 — Исходный код» .
  13. ^ «Mac OS X 10.4.1 — Исходный код» .
  14. ^ «файл лицензии launchd 106.3» .
  15. ^ «Mac OS X 10.4.2 — Исходный код» .
  16. ^ «Mac OS X 10.4.3 — Исходный код» .
  17. ^ «Mac OS X 10.4.4.ppc — Исходный код» .
  18. ^ «Mac OS X 10.4.5.ppc — Исходный код» .
  19. ^ «файл лицензии launchd 106.10» .
  20. ^ «Mac OS X 10.4.4.x86 — Исходный код» .
  21. ^ «Mac OS X 10.4.5.x86 — Исходный код» .
  22. ^ «файл лицензии launchd 106.13» .
  23. ^ «Mac OS X 10.4.6.ppc — Исходный код» .
  24. ^ «Mac OS X 10.4.6.x86 — Исходный код» .
  25. ^ «файл лицензии launchd 106.14» .
  26. ^ «Mac OS X 10.4.7.ppc — Исходный код» .
  27. ^ «Mac OS X 10.4.7.x86 — Исходный код» .
  28. ^ «Mac OS X 10.4.8.ppc — Исходный код» .
  29. ^ «Mac OS X 10.4.9.ppc — Исходный код» .
  30. ^ «Mac OS X 10.4.10.ppc — Исходный код» .
  31. ^ «Mac OS X 10.4.11.ppc — Исходный код» .
  32. ^ «файл лицензии launchd 106.20» .
  33. ^ «Mac OS X 10.4.8.x86 — Исходный код» .
  34. ^ «Mac OS X 10.4.9.x86 — Исходный код» .
  35. ^ «Mac OS X 10.4.10.x86 — Исходный код» .
  36. ^ «Mac OS X 10.4.11.x86 — Исходный код» .
  37. ^ «Инструменты разработчика 2.4 — Исходный код» .
  38. ^ «файл лицензии launchd 152» .
  39. ^ «файл лицензии launchd 257» .
  40. ^ «Mac OS X 10.5 — Исходный код» .
  41. ^ «Mac OS X 10.5.1 — Исходный код» .
  42. ^ «Инструменты разработчика 3.1 — Исходный код» .
  43. ^ «Инструменты разработчика 3.1b — Исходный код» .
  44. ^ «Инструменты разработчика 3.1.1 — Исходный код» .
  45. ^ «Инструменты разработчика 3.1.2 — Исходный код» .
  46. ^ «Инструменты разработчика 3.1.3 — Исходный код» .
  47. ^ «Инструменты разработчика 3.1.4 — Исходный код» .
  48. ^ «запуск файла лицензии 258.1» .
  49. ^ «Mac OS X 10.5.2 — Исходный код» . Архивировано из оригинала 21 сентября 2020 года . Проверено 19 августа 2019 г.
  50. ^ «запуск файла лицензии 258.12» .
  51. ^ «Mac OS X 10.5.3 — Исходный код» .
  52. ^ «Mac OS X 10.5.4 — Исходный код» .
  53. ^ «файл лицензии launchd 258.18» .
  54. ^ «Mac OS X 10.5.5 — Исходный код» .
  55. ^ «файл лицензии launchd 258.19» .
  56. ^ «Mac OS X 10.5.6 — Исходный код» .
  57. ^ «файл лицензии launchd 258.22» .
  58. ^ «Mac OS X 10.5.7 — Исходный код» .
  59. ^ «файл лицензии launchd 258.25» .
  60. ^ «Mac OS X 10.5.8 — Исходный код» .
  61. ^ «файл лицензии launchd 328» .
  62. ^ «Mac OS X 10.6 — Исходный код» .
  63. ^ «Mac OS X 10.6.1 — Исходный код» .
  64. ^ «Mac OS X 10.6.2 — Исходный код» .
  65. ^ «Инструменты разработчика 3.2.1 — Исходный код» .
  66. ^ «Инструменты разработчика 3.2.2 — Исходный код» .
  67. ^ «Инструменты разработчика 3.2.3 — Исходный код» .
  68. ^ «Инструменты разработчика 3.2.4 — Исходный код» .
  69. ^ «запуск файла лицензии 329.3» .
  70. ^ «Mac OS X 10.6.3 — Исходный код» .
  71. ^ «запуск файла лицензии 329.3.1» .
  72. ^ «Mac OS X 10.6.4 — Исходный код» .
  73. ^ «Инструменты разработчика 3.2.5 — Исходный код» .
  74. ^ «Инструменты разработчика 3.2.6 — Исходный код» .
  75. ^ «запуск файла лицензии 329.3.2» .
  76. ^ «Mac OS X 10.6.5 — Исходный код» .
  77. ^ «запуск файла лицензии 329.3.3» .
  78. ^ «Mac OS X 10.6.6 — Исходный код» .
  79. ^ «Mac OS X 10.6.7 — Исходный код» .
  80. ^ «Mac OS X 10.6.8 — Исходный код» .
  81. ^ «файл лицензии launchd 392.18» .
  82. ^ «Mac OS X 10.7 — Исходный код» .
  83. ^ «Mac OS X 10.7.1 — Исходный код» .
  84. ^ «запуск файла лицензии 392.35» .
  85. ^ «Mac OS X 10.7.2 — Исходный код» .
  86. ^ «запуск файла лицензии 392.36» .
  87. ^ «Mac OS X 10.7.3 — Исходный код» .
  88. ^ «запуск файла лицензии 392.38» .
  89. ^ «Mac OS X 10.7.4 — Исходный код» .
  90. ^ «запуск файла лицензии 392.39» .
  91. ^ «Mac OS X 10.7.5 — Исходный код» .
  92. ^ «заголовок лицензии в исходном коде launchd 442.21» .
  93. ^ «Mac OS X 10.8 — Исходный код» .
  94. ^ «Mac OS X 10.8.1 — Исходный код» .
  95. ^ «заголовок лицензии в исходном коде launchd 442.26.2» .
  96. ^ «Mac OS X 10.8.2 — Исходный код» .
  97. ^ «Mac OS X 10.8.3 — Исходный код» .
  98. ^ «Mac OS X 10.8.4 — Исходный код» .
  99. ^ «Mac OS X 10.8.5 — Исходный код» .
  100. ^ «заголовок лицензии в исходном коде launchd 842.1.4» .
  101. ^ «OS X 10.9 — Исходный код» .
  102. ^ «OS X 10.9.1 — Исходный код» .
  103. ^ «заголовок лицензии в исходном коде launchd 842.90.1» .
  104. ^ «OS X 10.9.2 — Исходный код» .
  105. ^ «OS X 10.9.3 — Исходный код» .
  106. ^ «заголовок лицензии в исходном коде launchd 842.92.1» .
  107. ^ «OS X 10.9.4 — Исходный код» .
  108. ^ «OS X 10.9.5 — Исходный код» .
[ редактировать ]

Разработчик Apple:

Библиотека устаревших документов разработчиков Apple:

Другие ссылки:

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 508a7a90d482f19830bdb7c1563efac1__1721764980
URL1:https://arc.ask3.ru/arc/aa/50/c1/508a7a90d482f19830bdb7c1563efac1.html
Заголовок, (Title) документа по адресу, URL1:
launchd - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)