Увеличить лимита открытых файловых дескрипторов для отдельного сервиса
Вы можете изменить лимит на количество открытых файловых дескрипторов для конкретного сервиса, а не для всей системы. Рассмотрим на примере apache. Чтобы изменить значения, откройте настройки службы через systemctl: # systemctl edit httpd.service Добавьте необходимые лимиты, например:
После изменения, нужно обновить конфигурацию сервиса и перезапустить его:
# systemctl daemon-reload# systemctl restart httpd.service
Чтобы проверить, изменились ли значения, нужно получить PID сервиса:
# systemctl status httpd.service
Например, вы определил PID сервиса 32724:
# cat /proc/32724/limits | grep «Max open files”
Так вы изменили значения Max open files для конкретного сервиса.
Проблемы с командами в терминале
Обычно проблемы с командами в терминале возникают не из-за ошибки linux или потому, что разработчики что-то недоработали, а потому, что вы ввели что-то неправильно или предали не те что нужно опции.
Если были переданы не те опции, то, скорее всего, программа покажет вам справку, ознакомившись с которой вы сможете очень быстро понять в чем проблема. Также справку выдают множество команд если их запустить без параметров.
Также довольно частой ошибкой при выполнении команд есть неиспользование команды sudo перед самой командой для предоставления ей прав суперпользователя. В таких случаях вы обычно получаете ошибку Permission Denied или просто уведомление, что не удалось открыть тот или иной файл или ресурс: can not open …, can not read … и так далее.
Если файла, которого вы передали в параметрах не существует, то вам будет об этом сказано соответствующим сообщением. Сообщения могут быть и более специфичные, в зависимости от ошибки, но в конце концов, вы можете воспользоваться переводчиком Google, чтобы понять смысл того, что хочет система.
Очень распространенной среди новичков ошибкой, есть no such file or directory при попытке выполнить файл, скачанный из интернета. Сразу кажется что это бред, ведь файл существует, но на самом деле оболочка ищет только файлы с флагом исполняемый, а поэтому пока вы не установите этот флаг для файла, он для оболочки существовать не будет.
Процесс rphost запускается и падает через некоторое время.
Пример полного текста ошибки:
Описание ошибки:
После выполнения команды.
1 | service srv1cv83start |
После запуска все процессы работают, что можно увидеть командой:
1 | ps –fUusr1cv8 |
Но, через некоторое время процесс rphost падает, что можно увидеть при повторной проверке:
Решение:
Часто это случается из-за отсутствия свободного места на диске на сервере 1С.
Проверим использование дискового пространства командой (подрбнее о командах Linux можно почитать тут Основные команды Linux.):
1 | df -h |
Видим что свободное место закончилось. Для решения проблемы освободим место на диске или смонтируем дополнительный диск.
Ошибка too many open files Linux
Дословно эта ошибка означает, что программа открыла слишком много файлов и больше ей открывать нельзя. В Linux установлены жёсткие ограничения на количество открываемых файлов для каждого процесса и пользователя.
Посмотреть, сколько файлов можно открыть в вашей файловой системе, можно, выполнив команду:
Посмотреть текущие ограничения количества открытых файлов для пользователя можно командой:
Утилита ulimit возвращает два вида ограничений — hard и soft. Ограничение soft вы можете менять в любую сторону, пока оно не превышает hard. Ограничение hard можно менять только в меньшую сторону от имени обычного пользователя. От имени суперпользователя можно менять оба вида ограничений так, как нужно. По умолчанию отображаются soft-ограничения:
Чтобы вывести hard, используйте опцию -H:
Вы можете изменить ограничение, просто передав в ulimit новое значение:
Но поскольку hard-ограничение составляет 4000, то установить лимит больше этого значения вы не сможете. Чтобы изменить настройки ограничений для пользователя на постоянной основе, нужно настроить файл /etc/security/limits.conf. Синтаксис у него такой:
имя_пользователя тип_ограничения название_ограничения значение
Вместо имени пользователя можно использовать звездочку, чтобы изменения применялись ко всем пользователям в системе. Тип ограничения может быть soft или hard. Название — в нашем случае нужно nofile. И последний пункт — нужное значение. Установим максимум — 1617596.
Нужно установить значение для soft и hard параметра, если вы хотите, чтобы изменения вступили в силу. Также убедитесь, что в файле /etc/pam.d/common-session есть такая строчка:
Если её нет, добавьте в конец. Она нужна, чтобы ваши ограничения загружались при авторизации пользователя.
Если вам нужно настроить ограничения только для определенного сервиса, например Apache или Elasticsearch, то для этого не обязательно менять все настройки в системе. Вы можете сделать это с помощью systemctl. Просто выполните:
И добавьте в открывшейся файл такие строки:
Здесь мы устанавливаем максимально возможное ограничение как для hard- так и для soft-параметра. Дальше нужно закрыть этот файл и обновить конфигурацию сервисов:
Затем перезагрузить нужный сервис:
Убедится, что для вашего сервиса применились нужные ограничения, можно, открыв файл по пути /proc/pid_сервиса/limits. Сначала смотрим PID нужного нам сервиса:
Затем смотрим информацию:
Подробнее об ошибке
Пример полного текста ошибки:
1 | Ошибка при выполнении файловой операции … Слишком много открытых файлов. |
1 2
3 4 5 |
Configuration repository operation failed.
по причине: Error reading file from the file storage По причине: File operation error……: Too many open files |
Описание:
Данная ошибка связана с тем, что ОС Linux исчерпала ограниченный ей лимит файлов на открытие и может возникать как при работе пользователя в пользовательском режиме, так и при работе разработчика с хранилищем конфигурации.
Побочными ошибками данной проблемы могут являться также ошибки работы с дисковой подсистемой. Такие как:
1 | Unable to open files |
Решение:
На всех серверах 1С выполним следующие настройки лимитов открываемых файлов.
Виды хранилища конфигураций
Хранилище конфигураций условно можно разделить на два вида:
- «Файловое» — хранилище располагается на общем сетевом ресурсе. Этот вариант не рекомендуется использовать для больших конфигураций, так как скорость работы оставляет желать лучшего.
- «Серверное» — доступ разработчиков к хранилищу осуществляется не напрямую, а через сервер хранилища конфигураций по протоколу TCP или HTTP. Работы по HTTP идет через Веб-сервер.
Сервер хранилища конфигураций – это приложение которое может быть запущено непосредственно или как демон в Linux (служба в Windows), обеспечивающее взаимодействие конфигуратора разработчика с базой данных хранилища конфигурации.
Одна служба обслуживает несколько различных хранилищ.
Рассмотрим установку и настройку хранилища конфигурации на сервере по управлением ОС Linux. Все приведенное ниже было про верно на дистрибутивах Linux RHEL/СentOS 7. Порт, который по умолчанию «слушает» процесс сервера хранилища конфигураций – 1542.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
В файловых системах NFS, в которых идентификаторы пользователей могут быть преобразованы, open может вернуть файловый описатель, но, например, read(2) вернет ошибку EACCES из-за того, что клиент выполняет команду open, проверяя права доступа (а преобразование идентификаторов производится сервером при запросах на чтение и запись).
Если создается файл, то его время последнего доступа, создания и модификации устанавливаются в значение текущего времени, а также устанавливаются поля времени модификации и создания родительского каталога. Иначе, если файл изменяется с флагом O_TRUNC, то его время создания и время изменения устанавливаются в значение текущего времени.
Как запустить fsck в режиме восстановления
Для запуска fsck в режиме восстановления требуется ещё несколько шагов. Сначала подготовьте вашу систему к перезагрузке. Остановите все критически важные службы, такие как MySQL/MariaDB и т. д., а затем введите.
reboot
Во время загрузки удерживайте нажатой клавишу Shift, чтобы отобразилось меню grub. Выберите Advanced options («Дополнительные параметры»).
Затем выберите Recovery mode («Режим восстановления»).
В следующем меню выберите «fsck».
Вас спросят, хотите ли вы перемонтировать файловую систему. Выберите Yes («да»).
Вы должны увидеть нечто подобное.
Затем вы можете вернуться к нормальной загрузке, выбрав Resume («Возобновить»).
Установка сервера хранилища конфигураций
Исполняемые файлы сервера хранилища конфигураций 1С устанавливаются вместе с рабочим сервером 1С Предприятия. Процесс установки сервера 1С на Linux подробно описан тут. После этой установки, в принципе можно запустить вручную исполняемый файл сервер хранилища /opt/1C/v8.3/x86_64/crserver -d /каталог_хранилища. После запуска можно начинать работу с хранилищем. Но при перезагрузке сервера придется снова вручную запускать эту службу. Ниже о том как настроить автозапуск и сделать дополнительные настройки для исключения ошибок в работе сервера хранилища.
1. Зайдем на сервер под суперпользователем root.
1 | sudo su root |
2. Создадим каталог для хранилища конфигураций.
1 | mkdir /stor1c |
3. Создадим файл /etc/systemd/system/crsrv1cv8.service и откроем его на редактирование:
1 |
touch /etc/systemd/system/crsrv1cv8.service vim /etc/systemd/system/crsrv1cv8.service |
Добавим туда следующие строки:
1 |
Description=crserverservice ExecStart=/opt/1C/v8.3/x86_64/crserver-d/stor1c/ WantedBy=multi-user.target |
4. Запустим службу сервера хранилищ конфигураций
1 | systemctl startcrsrv1cv8 |
5. Добавим службу сервера хранилищ конфигураций в автозапуск:
1 | systemctl enablecrsrv1cv8 |
Исправление ошибок Linux
Каждый пользователь, рано или поздно сталкивается с определенными проблемами в своей операционной системе Linux. Это может быть просто неправильное использование команд или их непонимание, так и такие серьезные ошибки Linux, как отсутствие драйверов, неработоспособность сервисов зависание системы и так далее.
Эта статья ориентирована в первую очередь на новичков, которые не знают, что делать когда их будут поджидать проблемы linux, мы дадим общую концепцию и попытаемся показать в какую сторону двигаться дальше. Мы рассмотрим исправление ошибок в linux как простых, так и более сложных. Но давайте сначала определим, какие проблемы linux будем рассматривать, разобьем их на категории:
- Проблемы с командами в терминале
- Проблемы с программами
- Проблемы с драйверами и ядром
- Проблемы с графической оболочкой
- Проблемы с диском и файловой системой
Все это мы рассмотрим ниже, но сначала общее введение и немного теории.
Как принудительно проверить диск с помощью fsck при загрузке системы
Это относительно легко выполнить, единственное, что вам нужно сделать, это создать файл с именем forcefsck в корневом разделе вашей системы. Используйте следующую команду:
sudo touch /forcefsck
Затем вы можете просто принудительно перезагрузить или запланировать перезагрузку системы. Во время следующей загрузки будет выполнена проверка диска командой fsck. Если время простоя критично, рекомендуется тщательно его спланировать, поскольку, если в вашей системе много используемых inode, выполнение fsck может занять дополнительное время.
После загрузки системы проверьте, существует ли ещё файл:
ls /forcefsck
Если это так, вы можете удалить его, чтобы избежать появления fsck при каждой загрузке системы.
Решение проблем Linux
Linux очень сильно отличается от WIndows, это заметно также при возникновении проблем Linux. Вот допустим, произошла ошибка в программе Windows, она полностью закрывается или выдает непонятное число с кодом ошибки и все, вы можете только догадываться или использовать поиск Google, чтобы понять что произошло. Но в Linux все совсем по-другому. Здесь каждая программа создает лог файлы, в которых мы можем при достаточном знании английского или даже без него, выяснить, что произошло. Более того, если программу запускать из терминала, то все ошибки linux и предупреждения мы увидим прямо в окне терминала. и сразу можно понять что нужно делать.
Причем вы сможете понять что произошло, даже не зная английского. Главным признаком ошибки есть слово ERROR (ошибка) или WARNING (предупреждение). Рассмотрим самые частые сообщения об ошибках:
- Permission Denied — нет доступа, означает что у программы нет полномочий доступа к определенному файлу или ресурсу.
- File or Directory does not exist — файл или каталог не существует
- No such file or Directory — нет такого файла или каталога
- Not Found — Не найдено, файл или ресурс не обнаружен
- Connection Refused — соединение сброшено, значит, что сервис к которому мы должны подключиться не запущен
- is empty — означает, что папка или нужный файл пуст
- Syntax Error — ошибка синтаксиса, обычно значит, что в конфигурационном файле или введенной команде допущена ошибка.
- Fail to load — ошибка загрузки, означает что система не может загрузить определенный ресурс, модуль или библиотеку (fail to load library) обычно также система сообщает почему она не может загрузить, permission denied или no such file и т д.
Сообщения об ошибках, кроме терминала, мы можем найти в различных лог файлах, все они находятся в папке /var/log, мы рассматривали за какие программы отвечают определенные файлы в статье просмотр логов linux. Теперь же мы подробнее рассмотрим где и что искать если linux выдает ошибку.
Ошибка too many open files Linux
Дословно эта ошибка означает, что программа открыла слишком много файлов и больше ей открывать нельзя. В Linux установлены жёсткие ограничения на количество открываемых файлов для каждого процесса и пользователя.
Посмотреть, сколько файлов можно открыть в вашей файловой системе, можно, выполнив команду:
Посмотреть текущие ограничения количества открытых файлов для пользователя можно командой:
Утилита ulimit возвращает два вида ограничений — hard и soft. Ограничение soft вы можете менять в любую сторону, пока оно не превышает hard. Ограничение hard можно менять только в меньшую сторону от имени обычного пользователя. От имени суперпользователя можно менять оба вида ограничений так, как нужно. По умолчанию отображаются soft-ограничения:
Чтобы вывести hard, используйте опцию -H:
Вы можете изменить ограничение, просто передав в ulimit новое значение:
Но поскольку hard-ограничение составляет 4000, то установить лимит больше этого значения вы не сможете. Чтобы изменить настройки ограничений для пользователя на постоянной основе, нужно настроить файл /etc/security/limits.conf. Синтаксис у него такой:
имя_пользователя тип_ограничения название_ограничения значение
Вместо имени пользователя можно использовать звездочку, чтобы изменения применялись ко всем пользователям в системе. Тип ограничения может быть soft или hard. Название — в нашем случае нужно nofile. И последний пункт — нужное значение. Установим максимум — 1617596.
Нужно установить значение для soft и hard параметра, если вы хотите, чтобы изменения вступили в силу. Также убедитесь, что в файле /etc/pam.d/common-session есть такая строчка:
Если её нет, добавьте в конец. Она нужна, чтобы ваши ограничения загружались при авторизации пользователя.
Если вам нужно настроить ограничения только для определенного сервиса, например Apache или Elasticsearch, то для этого не обязательно менять все настройки в системе. Вы можете сделать это с помощью systemctl. Просто выполните:
И добавьте в открывшейся файл такие строки:
Здесь мы устанавливаем максимально возможное ограничение как для hard- так и для soft-параметра. Дальше нужно закрыть этот файл и обновить конфигурацию сервисов:
Затем перезагрузить нужный сервис:
Убедится, что для вашего сервиса применились нужные ограничения, можно, открыв файл по пути /proc/pid_сервиса/limits. Сначала смотрим PID нужного нам сервиса:
Затем смотрим информацию:
Дополнительные настройки
На сервере Linux есть ограничения на потребление пользователями ресурсов системы. При работе с сервером хранилища конфигурации 1С требует определенная настройка этих параметров, в частности лимита на открытие файлов. Рассмотрим как это сделать по шагам:
1. Получим значение количества файлов, которые можно открыть в файловой системе нашего сервера:
1 | cat /proc/sys/fs/file-max |
На экране должно отобразиться значение лимита открытия файлов. Полученное значение необходимо будет использовать в дальнейшей настройке. Допустим оно равно 800000, запомним его.
2. Настроем лимит открытия файлов для пользователей, откроем на редактирование файл:
1 | vim /etc/security/limits.conf |
Добавим строки:
1 |
*hardnofile800000 *softnofile800000 |
3. Отредактируем настройки демона (службы) сервера хранилища 1С:
1 | systemctl editcrsrv1cv8 |
Добавим строки:
1 |
LimitNOFILE=800000 |
4. Обновим конфигурацию служб:
1 | systemctl daemon-reload |
5. Перезапустим службу сервера хранилища 1С:
1 | systemctl restartcrsrv1cv8 |
6. Убедимся, что изменения вступили в силу. Получить pid службы:
1 | ps -furoot|grep crser |
7. По номеру pid получим значение параметра «max open files»:
1 | cat /proc/pid/limits|grep open |
Значение должно быть 800000.
Если после этого будем так же получать ошибку «Too many open files», увеличим лимит на открытие файлов.
8. Сначала увеличим лимит установленный на уровне системы. Отредактируем файл:
1 | vim /etc/sysctl.conf |
Добавим строку:
1 | fs.file-max=900000 |
4. Применим изменения в системе:
1 | sysctl –p |
После этого повторим настройки с шага 2, но уже с новым значением лимита — 900000. Опытным путем находим то значение лимита которое позволит работать без ошибки «Too many open files».
Проблемы с командами в терминале
Обычно проблемы с командами в терминале возникают не из-за ошибки linux или потому, что разработчики что-то недоработали, а потому, что вы ввели что-то неправильно или предали не те что нужно опции.
Если были переданы не те опции, то, скорее всего, программа покажет вам справку, ознакомившись с которой вы сможете очень быстро понять в чем проблема. Также справку выдают множество команд если их запустить без параметров.
Также довольно частой ошибкой при выполнении команд есть неиспользование команды sudo перед самой командой для предоставления ей прав суперпользователя. В таких случаях вы обычно получаете ошибку Permission Denied или просто уведомление, что не удалось открыть тот или иной файл или ресурс: can not open . can not read . и так далее.
Если файла, которого вы передали в параметрах не существует, то вам будет об этом сказано соответствующим сообщением. Сообщения могут быть и более специфичные, в зависимости от ошибки, но в конце концов, вы можете воспользоваться переводчиком Google, чтобы понять смысл того, что хочет система.
Очень распространенной среди новичков ошибкой, есть no such file or directory при попытке выполнить файл, скачанный из интернета. Сразу кажется что это бред, ведь файл существует, но на самом деле оболочка ищет только файлы с флагом исполняемый, а поэтому пока вы не установите этот флаг для файла, он для оболочки существовать не будет.
‘Too Many Open Files’ error & Open File Limits in Linux
Now we know that these titles mean that a process has opened too many files (file descriptors) and cannot open new ones. In Linux, the maximum open file limits are set by default for each process or user and the values are rather small.
We, at Bobcares have monitored this closely and have come up with a few solutions:
Increase the Max Open File Limit in Linux
A large number of files can be opened if we change the limits in our Linux OS. In order to make new settings permanent and prevent their reset after a server or session restart, make changes to /etc/security/limits.conf. by adding these lines:
- hard nofile 97816
- soft nofile 97816
If it is using Ubuntu, add this line as well:
session required pam_limits.so
These parameters allow to set open file limits after user authentication.
After making the changes, reload the terminal and check the max_open_files value:
# ulimit -n 97816
Increase the Open File Descriptor Limit per service
A change in the limit of open file descriptors for a specific service, rather than for an entire operating system is possible.
For example, if we take Apache, to change the limits, open the service settings using systemctl:
systemctl edit httpd.service
Once the service settings is open, add the limits required. For example;
LimitNOFILE=16000 LimitNOFILESoft=16000
After making the changes, update the service configuration and restart it:
# systemctl daemon-reload # systemctl restart httpd.service
To ensure the values have changed, get the service PID:
# systemctl status httpd.service
For example, if the service PID is 3724:
# cat /proc/3724/limits | grep “Max open files”
Thus, we can change the values for the maximum number of open files for a specific service.
Set Max Open Files Limit for Nginx & Apache
In addition to changing the limit on the number of open files to a web server, we should change the service configuration file.
For example, specify/change the following directive value in the Nginx configuration file /etc/nginx/nginx.conf:
worker_rlimit_nofile 16000
While configuring Nginx on a highly loaded 8-core server with worker_connections 8192, we need to specify
8192*2*8 (vCPU) = 131072 in worker_rlimit_nofile
Then restart Nginx.
For apache, create a directory:
# mkdir /lib/systemd/system/httpd.service.d/
Then create the limit_nofile.conf file:
# nano /lib/systemd/system/httpd.service.d/limit_nofile.conf
Add to it:
LimitNOFILE=16000
Do not forget to restart httpd.
Alter the Open File Limit for Current Session
To begin with, run the command:
# ulimit -n 3000
Once the terminal is closed and a new session is created, the limits will get back to the original values specified in /etc/security/limits.conf.
To change the general value for the system /proc/sys/fs/file-max, change the fs.file-max value in /etc/sysctl.conf:
fs.file-max = 100000
Finally, apply:
Conclusion
To conclude, today, we figured how our Support Engineers solve the error, ‘Too Many Open Files’ and discussed options to change the default limits set by Linux.
We saw that the default value of open file descriptor limit in Linux is too small, and discussed a few options for changing these limits of the server.
Действия со стороны обычного пользователя
Обычный пользователь, который сталкивается с неполадкой 429 при попытке просмотреть конкретный сайт, не сможет ничего предпринять самостоятельно, чтобы решить ее. Однако, если есть возможность, стоит обратиться напрямую к владельцу интернет-ресурса или администраторам, сообщив им о появившейся ошибке. Так вы дадите понять, что сайт работает не так, как это нужно, и ускорите процесс решения трудностей.
Ошибка HTTP с кодом 429 – неприятная ситуация, которая может коснуться каждого владельца сайта. Из приведенного выше материала вы поняли, что существует две основные причины, которые могут ее вызывать. Теперь остается только разобраться с каждой из них и провести проверочные работы, чтобы оперативно исправить сложившуюся ситуацию.
Error opening directory linux
Некоторые из вышеописанных флагов могут быть изменены с помощью fctnl после открытия файла. Аргумент mode задает права доступа, которые используются в случае создания нового файла. Они модифицируются обычным способом, с помощью umask процесса; права доступа созданного файла равны (mode &
umask)
Обратите внимание, что этот режим применяется только к правам создаваемого файла; open создает файл только для чтения, но может вернуть дескриптор с установленными флагами для чтения и записи
Следующие символьные константы можно использовать в mode: S_IRWXU (00700 пользователь (владелец файла) имеет права на чтение, запись и выполнение файла); S_IRUSR (S_IREAD) (00400 пользователь имеет права на чтение файла); S_IWUSR (S_IWRITE) (00200 пользователь имеет права на запись информации в файл); S_IXUSR (S_IEXEC) (00100 пользователь имеет права на выполнение файла); S_IRWXG (00070 группа имеет права на чтение, выполнение файла и запись в него информации); S_IRGRP (00040 группа имеет права на чтение файла); S_IWGRP (00020 группа имеет права на запись информации в файл); S_IXGRP (00010 группа имеет права на выполнение файла); S_IRWXO (00007 все остальные имеют права на чтение, выполнение файла и запись в него информации); S_IROTH (00004 все остальные имеют права на чтение файла); S_IWOTH (00002 все остальные имеют права на запись информации в файл); S_IXOTH (00001 все остальные имеют права на выполнение файла).
mode всегда должен быть указан при использовании O_CREAT; во всех остальных случаях этот параметр игнорируется. creat эквивалентен open с flags, которые равны O_CREAT | O_WRONLY | O_TRUNC.
Не запускается сервер 1С. Нет запущенных процессов rphost, rmngr, ragent. Error: service failed to start!
Фактически это означает что сервер 1С:Предприятия не запустился.
Описание:
Запускаем сервер 1С Предприятия:
1 | service srv1cv83start |
Система сообщает нам, что служба не была запущена:
1 |
Starting1CEnterprise8.3serverErrorservice failed tostart! FAILED |
При проверке статуса службы 1С сервера командой :
1 | service srv1cv83status |
Система выдает сообщение, что служба была стартовала, но агент сервера 1С не запущен:
1 |
1CEnterprise8.3server status Init scriptSTARTED. RagentNOTRUNNING. |
Проверяем работу, выводим список процессов запущенных от имени пользователя 1С сервера:
1 | Ps –fUusr1cv8 |
Видим, что в списке запущенных процессов нет ни ragent, ни rmngr, ни rphost.
Решение:
2. Проверить настройку прав доступа
1. Проверим включена ли система разграничения прав доступа SELinux. Возможно, он работает, а для 1С сервера не задана политика доступа. В этом случае из-за ограничений доступа служба 1С сервера не сможет работать. Вводим команду:
1 | getenforce |
2. Если видим результат:
1 | Enforcing |
значит SELinux работает. Либо настраиваем политику доступа для 1С сервера, либо отключаем SELinux.
3. Отключаем SELinux командой:
1 | setenforce0 |
1 | vim /etc/sysconfig/selinux |
меняем параметр SELINUX:
1 | SELINUX=disabled |
5. Запускаем север 1С и проверяем его работу.