Я запускаю lsof на одном из моих серверов Linux, чтобы проверить, /tmp/incoming_data.txt
открыт ли один файл ( ) в системе ext3 другими программами. На моем сервере много TCP-соединений. Странно то, что выполнение sudo lsof занимает около двух минут, и он использует 99.x% CPU в течение этих двух минут.
Команда , которую я использовал это sudo lsof /tmp/incoming_data.txt
. Я пробовал " fuser ", который занимает примерно столько же времени процессора и времени выполнения. Что я могу сделать, чтобы решить эту проблему?
lsof
показывает? На скольких процессах и потоках этот файл открыт? Какова нагрузка на процессор, когда не работает lsof?Ответы:
Если вы уверены, что можете пропустить открытые соединения TCP или UDP, поскольку вы упомянули, что их слишком много, вы можете использовать специфическую для диалекта опцию lsof
-X
.Прочтите справочную страницу lsof и найдите '-X' для получения подробной информации.
источник
Передайте
-n
опцию, чтобы пропустить разрешение DNS-имен IP-соединений. Это почти наверняка будет большой частью любого замедления.источник
Я нашел этот маленький пакет NPM, который делает замечательную работу по ускорению lsof для файлов: https://www.npmjs.com/package/lsof-mac-fast .
Я создал скрипт-обертку, чтобы использовать его:
Это мой сценарий:
Интервал повторения может быть очень низким, например, 10 мс работает нормально.
источник