Вопрос или проблема
На нашем сервере rhel версии 7.6 у нас есть следующая служба systemctl
/etc/systemd/system/test-infra.service
и значение LimitNOFILE составляет
systemctl show test-infra.service | grep LimitNOFILE
LimitNOFILE=65535
поэтому я предполагаю, что максимальное количество открытых файлов для этой службы составляет 65535
возможно ли вывести текущее количество открытых файлов, которые используются этой службой?
или как показать, сколько файлов использует эта служба?
Если вы можете идентифицировать исполняемый файл, который запускается этой службой (в операторе ExecStart=
файла test-infra.service
), вы должны иметь возможность сделать это, используя
lsof | grep имя исполняемого файла
возможно, с последующим | wc -l
, если вы просто хотите посчитать файлы.
Ответ или решение
Как проверить текущее количество открытых файлов для конкретной службы в RHEL 7.6
В операционной системе RHEL 7.6 с использованием systemd, управление службой осуществляется через команды systemctl. В вашем случае требуется проверить, сколько файлов открыто службой, определенной в файле /etc/systemd/system/test-infra.service
, с установленным лимитом на количество открытых файлов (LimitNOFILE=65535
).
Шаги для выполнения проверки
-
Определение исполняемого файла службы:
Прежде всего, необходимо узнать, какой исполняемый файл запускается службой. Это можно сделать, выполнив следующую команду:systemctl cat test-infra.service | grep ExecStart=
Эта команда вернет строку, содержащую путь к исполняемому файлу, который будет использоваться, когда служба запущена.
-
Использование команды
lsof
:
После того как вы узнали имя исполняемого файла, вы можете использовать командуlsof
(List Open Files) для проверки открытых файлов. Команда приведет к списку всех открытых файлов, связанных с этим конкретным исполняемым файлом. Вот как это сделать:lsof | grep <имя_исполняемого_файла>
Замените
<имя_исполняемого_файла>
на действительное имя файла, полученное из предыдущего шага. -
Подсчет открытых файлов:
Чтобы просто подсчитать количество открытых файлов, можно объединить командуlsof
сwc -l
:lsof | grep <имя_исполняемого_файла> | wc -l
Эта команда вернет количество открытых файлов для указанной службы.
Возможные проблемы и их решение
-
Отсутствие доступа: При выполнении цикла
lsof
у вас могут возникнуть проблемы с доступом, если вы не обладаете достаточными правами. В этом случае используйте команду с правами суперпользователя:sudo lsof | grep <имя_исполняемого_файла>
-
Производительность: Учтите, что использование
lsof
может создавать нагрузку на систему, особенно если служба открывает большое количество файлов. Рекомендуется выполнять команды в моменты низкой нагрузки.
Заключение
Таким образом, вы можете легко проверить количество открытых файлов конкретной системы службы в RHEL 7.6 с помощью команды lsof
. Подходя к этой задаче, важно учитывать детали конфигурации службы и наличие необходимых прав на выполнение команд. Убедитесь, что вы соблюдаете рекомендации по мониторингу ресурсов, чтобы избежать лишней нагрузки на сервер.