Архив рубрики: Публикации

Топ-3 тренда компьютерного зрения на 2022 год

Компьютерное зрение является одной из самых прогрессивных и быстро развивающихся областей. По данным Grand View Research, размер мирового рынка компьютерного зрения в 2020 году оценивался в 11,32 миллиарда долларов, и ожидается, что совокупный годовой темп роста составит 7,3% в период с 2021 по 2028 год. Вариантов использования компьютерного зрения с поддержкой ИИ почти бесчисленное множество. наиболее популярными из которых являются потребительские дроны, а также автономные и полуавтономные транспортные средства. Кроме того, благодаря недавнему прогрессу в компьютерном зрении, ИИ теперь необходим в различных отраслях, таких как образование, здравоохранение, робототехника, бытовая электроника, розничная торговля, производство, и более. Итак, учитывая резкую эволюцию компьютерного зрения, важно исследовать, с чего все началось и куда идет, особенно когда дело доходит до выбора следующего разработчика систем компьютерного зрения. В этой статье мы рассмотрим основы и тенденции компьютерного зрения.

  • Эволюция компьютерного зрения
  • Текущие проблемы компьютерного зрения
  • Тенденция 1: компьютерное зрение на грани
  • Тренд 2: Компьютерное зрение как услуга
  • Тенденция 3: Компьютерное зрение, ориентированное на данные

Эволюция компьютерного зрения

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

Компьютерное зрение начало появляться в конце 1960-х годов в университетах, которые стали пионерами в области искусственного интеллекта. Идея заключалась в том, чтобы имитировать человеческое зрение и позволить компьютерам или роботам «видеть» объекты. Значительное количество существующих сегодня алгоритмов компьютерного зрения появилось еще в 1970-х годах. К ним относятся извлечение краев из изображений, маркировка линий, неполиэдральное и многогранное моделирование, кластеризация, оптический поток и оценка движения.

К подобластям современного компьютерного зрения относятся:

  • Реконструкция сцены
  • Обнаружение объекта
  • Обнаружение событий
  • Отслеживание видео
  • Распознавание объектов
  • 3D оценка позы
  • Оценка движения
  • Визуальное обслуживание
  • 3D-моделирование сцены
  • Восстановление изображения

 

Топ-3 тренда компьютерного зрения на 2022 год

Текущие проблемы компьютерного зрения

Несмотря на то, что с 1960-х годов в области компьютерного зрения был достигнут значительный прогресс, это все еще в значительной степени неосвоенная область с точки зрения исследований и разработок. В основном это связано с тем, что человеческое зрение само по себе чрезвычайно сложно, а системы компьютерного зрения страдают по сравнению с ним. Людям требуется несколько секунд, чтобы узнать своих друзей на изображениях, даже в разном возрасте, и наша способность запоминать и сохранять лица для будущего распознавания кажется безграничной. Однако трудно представить, какой объем работы потребуется компьютеру, чтобы справиться с чем-то почти подобным. Еще одна проблема, с которой сегодня сталкиваются инженеры по компьютерному зрению, — это устойчивая интеграция инструментов компьютерного зрения с открытым исходным кодом в свои приложения. В частности, решения компьютерного зрения постоянно зависят от эволюции как программного, так и аппаратного обеспечения.

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

Тенденция 1: компьютерное зрение на грани

Edge — это новое облако. Термин « пограничные вычисления » относится к технологии, привязанной к тому месту, где генерируются данные, т. е. к границе архитектуры: она позволяет обрабатывать и анализировать данные там, где (или ближе к тому месту), где они собираются, а не в облаке или Дата центр. В проектах компьютерного зрения все больше и больше внедряются архитектуры граничных вычислений, потому что они решают проблемы доступности сети, пропускной способности и задержки. Даже облачные архитектуры часто необходимо развертывать на периферийных устройствах из-за конфиденциальности, надежности и производительности. Граничные вычисления особенно популярны для проектов, где требуется обработка данных в реальном времени. К таким проектам относятся беспилотные автомобили, дроны и т. д.

Топ-3 тренда компьютерного зрения на 2022 год

 

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

  • Идентифицировать объекты
  • Найдите конкретный объект среди других
  • Обнаружение препятствий
  • С обнаружением знаков и навигацией
  • Распознавать людей
  • Делитесь информацией о людских скоплениях

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

Тренд 2: Компьютерное зрение как услуга

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

  • Разработка рабочего процесса вокруг ваших процессов ИИ.
  • Получение данных из разных источников.
  • Хранение и маркировка данных.
  • Проверка и исправление неправильно маркированных данных.
  • После версионирования.

Сейчас большое внимание уделяется CVaaS, что означает «компьютерное зрение как услуга». Это позволяет компаниям, не занимающимся искусственным интеллектом, пользоваться преимуществами технологических достижений и приобретать алгоритмы предварительной сборки, доступные на платформах компьютерного зрения. Поскольку к алгоритмам и API можно получить доступ по запросу в рамках модели оплаты по факту использования, инновации в области компьютерного зрения становятся доступными и масштабируемыми. Например, разумным шагом будет аутсорсинг услуг по аннотации данных, учитывая, что это первая и наиболее важная часть успешного проекта компьютерного зрения. Мусор на входе, мусор на выходе, помните?

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

Топ-3 тренда компьютерного зрения на 2022 год

Тенденция 3: Компьютерное зрение, ориентированное на данные

Компьютерное зрение — это все о данных, и модель так же хороша, как и примеры, которыми вы ее кормите. Первый шаг к созданию моделей ИИ — это сбор огромных наборов данных для обучения. Мы ошибочно думаем, что неточность нашей модели может быть решена только путем сбора большого, иногда безумного количества данных. Например, если мы создаем модель для обнаружения кроликов, нам потребуется десять тысяч изображений кроликов с разных ракурсов, при различных погодных условиях и условиях освещения; мы будем собирать кроликов разных размеров и цветов.

Тем не менее, сегодня наблюдается тенденция к тому, чтобы качество преобладало над количеством. Это не означает, что количество примеров не играет никакой роли, но ваша модель обучения не обязательно выиграет от большого количества примеров обучения. Скорее, это будет работать хорошо, если предоставленные обучающие примеры будут точными и информативными. Если мы обнаружим, что наши тренировочные данные неточны, мы можем либо убрать шум, либо найти неправильно помеченные изображения. Если он недостаточно информативен, мы можем удвоить набор данных и собрать еще одну партию изображений с кроликами или даже заменить первую партию. Как измерить информативность изображения? Что ж, это заслуживает отдельной статьи.

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

Основные выводы

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



2022-04-26T14:03:54
Машинное обучение

Встроенные переменные nginx

  • $args, эта переменная равна аргументам в строке запроса;
  • $arg_name, эта переменная равна аргументу name в строке запроса;
  • $binary_remote_addr, эта переменная равна адресу клиента в бинарном виде, длина её значения всегда 4 байта;
  • $content_length, эта переменная равна строке «Content-Length» в заголовке запроса;
  • $content_type, эта переменная равна строке «Content-Type» в заголовке запроса;
  • $cookie_name, эта переменная равна cookie name;
  • $document_root, эта переменная равна значению директивы root для текущего запроса;
  • $document_uri, то же самое, что и $uri;
  • $host, эта переменная равна строке «Host» в заголовке запроса или имени сервера, на который пришёл запрос, если этой строки нет;
  • $hostname, эта переменная равна имени хоста;
  • $http_name, эта переменная равна строке name в заголовке запроса;
  • $is_args, эта переменная равна «?», если в строке запроса есть аргументы, и пустой строке, если их нет;
  • $limit_rate, эта переменная позволяет установить ограничение скорости соединения;
  • $pid, эта переменная равна номеру рабочего процесса;
  • $request_method, эта переменная равна методу запроса, обычно это «GET» или «POST»;
  • $remote_addr, эта переменная равна адресу клиента;
  • $remote_port, эта переменная равна порту клиента;
  • $remote_user, эта переменная равна имени пользователя, используемого в Basic аутентификации;
  • $realpath_root, эта переменная равна значению директивы root для текущего запроса, при этом все символические ссылки преобразованы в реальные путь;
  • $request_filename, эта переменная равна пути к файлу для текущего запроса, формируемому из директив root или alias и URI запроса;
  • $request_body, эта переменная содержит тело запроса. Значение переменной появляется в location’ах, обрабатываемых директивами proxy_pass и fastcgi_pass.
  • $request_body_file, эта переменная равна имени временного файла, в котором хранится тело запроса. По завершению работы файл необходимо удалить. Для того, чтобы тело запроса клиента всегда записывалось в файл, нужно указать client_body_in_file_only on. При передаче имени в проксированном запросе или в запросе к FastCGI-серверу следует запретить передачу самого тела директивами «proxy_pass_request_body off» или «fastcgi_pass_request_body off» соответственно.
  • $request_uri, эта переменная равна полному первоначальному URI вместе с аргументами;
  • $query_string, то же самое, что и $args;
  • $scheme, эта переменная равна схеме запроса — «http» или «https»;
  • $server_protocol, эта переменная равна протоколу запроса, обычно это «HTTP/1.0» или «HTTP/1.1»;
  • $server_addr, эта переменная равна адресу сервера, на который пришёл запрос. Как правило, для получения значения этой переменной делается один системный вызов. Для того, чтобы избежать системного вызова, нужно указывать адреса в директивах listen и использовать параметр bind;
  • $server_name, эта переменная равна имени сервера, на который пришёл запрос;
  • $server_port, эта переменная равна порту сервера, на который пришёл запрос;
  • $uri, эта переменная равна текущему URI в запросе, он может отличаться от первоначального, например, при внутренних редиректах или при использовании индексных файлов.




Источник: http://docs.mirocow.com/doku.php?id=nginx:%D0%B2%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_nginx



2022-04-25T01:00:51
Software

В чем разница между абстрактным классом и интерфейсом в Java

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

Этот пост поможет вам в перечисленных ниже аспектах интерфейсов Java и абстрактных классов:

  1. Что такое интерфейс Java.
  2. Что такое абстрактный класс Java.
  3. Сравнение на основе сходства.
  4. Абстрактный класс Java против интерфейса Java.

Итак, начнем!

 

Что такое Java-интерфейс

Это шаблон для класса, который содержит некоторые абстрактные методы и статические/финальные переменные. В java интерфейсы предоставляют только объявление метода, а дочерние/реализованные классы предоставляют определение метода.

 

Что такое абстрактный класс Java

Любой класс Java, который имеет хотя бы один абстрактный (только объявление метода) метод, известен как абстрактный класс в Java.

 

Сравнение на основе сходства

Некоторые важные аспекты интерфейсов и абстрактных классов Java перечислены ниже:

  • В java мы не можем создать объект/экземпляр обоих интерфейсов или абстрактных классов.
  • Оба предоставляют пользователю только необходимые данные.
  • Оба обеспечивают абстракцию.
  • Оба могут иметь абстрактные методы/функции.
  • Оба скрывают информацию/детали реализации от пользователей.

 

Абстрактный класс Java против интерфейса Java

Ключевые слова «abstract» и «interface» используются в java для создания/объявления абстрактных классов и интерфейсов соответственно.

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

Основной синтаксис абстрактного класса и интерфейса показан в приведенных ниже фрагментах:

Абстрактный класс

public abstract class ClassName{

public abstract void methodName();

}



Интерфейс

public interface InterfaceName{

void methodName();

}

 

Интерфейсы должны иметь все абстрактные методы, а абстрактные классы могут иметь как абстрактные, так и неабстрактные методы.

Интерфейс может иметь только статические члены, тогда как абстрактные классы могут иметь статические и нестатические члены.

Интерфейсы имеют только «конечные» (неизменяемые) члены, в то время как абстрактные классы могут иметь конечные и неконечные члены.

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

Множественное наследование может быть достигнуто с помощью интерфейсов, в то время как абстрактные классы не поддерживают множественное наследование.

В Java абстрактный класс может наследовать другой класс и может реализовывать множество интерфейсов, с другой стороны, интерфейс Java может расширять только другой интерфейс.

 

Пример

Приведенный ниже пример позволит вам понять, как интерфейсы и абстрактные классы работают в java:

interface FirstInterface {

    void methodOne();

    void methodTwo();

    void methodThree();

}

abstract class AbstractClass implements FirstInterface {

    public void methodThree() {

        System.out.println("Abstract class Implementing methodThree");

    }

}

class NormalClass extends AbstractClass {

    public void methodOne() {

        System.out.println("Implementing methodOne");

    }

    public void methodTwo() {

        System.out.println("Implementing methodTwo");

    }

    public void methodThree() {

        System.out.println("Implementing methodThree");

    }

}

public class InterfaceExample {

    public static void main(String[] args) {

        FirstInterface obj = new ClassThree();

        obj.methodOne();

        obj.methodTwo();

        obj.methodThree();

    }    

}

 

В этом примере мы создали интерфейс «FirstInterface» , абстрактный класс «AbstractClass» и еще два обычных класса Java и выполнили следующие функции:

  • FirstInterface содержит три абстрактных метода.
  • AbstractClass реализует FirstInterface и переопределяет methodThree ().
  • NormalClass расширяет AbstractClass и переопределяет методы methodOne() и methodTwo() класса FirstInterface.

InterfaceExample — это основной класс, из которого мы создали основной метод и вызвали все методы FirstInterface :

В чем разница между абстрактным классом и интерфейсом в Java

 

Вывод подтвердил работу указанной выше Java-программы.

 

Вывод

В Java абстракция может быть достигнута с помощью абстрактных классов и интерфейсов, и оба они не могут быть созданы. Однако между абстрактными классами и интерфейсами существует множество различий. Например, интерфейсы должны иметь все абстрактные методы, а абстрактные классы могут иметь абстрактные и неабстрактные методы; используя интерфейсы, можно достичь множественного наследования, в то время как абстрактные классы не поддерживают множественное наследование и т. д. В этом посте объясняются различные аспекты абстрактных классов и интерфейсов с помощью подходящих примеров.



2022-04-24T07:00:21
Java

В чем разница между абстрактным классом и интерфейсом в Java

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

Этот пост поможет вам в перечисленных ниже аспектах интерфейсов Java и абстрактных классов:

  1. Что такое интерфейс Java.
  2. Что такое абстрактный класс Java.
  3. Сравнение на основе сходства.
  4. Абстрактный класс Java против интерфейса Java.

Итак, начнем!

 

Что такое Java-интерфейс

Это шаблон для класса, который содержит некоторые абстрактные методы и статические/финальные переменные. В java интерфейсы предоставляют только объявление метода, а дочерние/реализованные классы предоставляют определение метода.

 

Что такое абстрактный класс Java

Любой класс Java, который имеет хотя бы один абстрактный (только объявление метода) метод, известен как абстрактный класс в Java.

 

Сравнение на основе сходства

Некоторые важные аспекты интерфейсов и абстрактных классов Java перечислены ниже:

  • В java мы не можем создать объект/экземпляр обоих интерфейсов или абстрактных классов.
  • Оба предоставляют пользователю только необходимые данные.
  • Оба обеспечивают абстракцию.
  • Оба могут иметь абстрактные методы/функции.
  • Оба скрывают информацию/детали реализации от пользователей.

 

Абстрактный класс Java против интерфейса Java

Ключевые слова «abstract» и «interface» используются в java для создания/объявления абстрактных классов и интерфейсов соответственно.

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

Основной синтаксис абстрактного класса и интерфейса показан в приведенных ниже фрагментах:

Абстрактный класс

public abstract class ClassName{

public abstract void methodName();

}



Интерфейс

public interface InterfaceName{

void methodName();

}

 

Интерфейсы должны иметь все абстрактные методы, а абстрактные классы могут иметь как абстрактные, так и неабстрактные методы.

Интерфейс может иметь только статические члены, тогда как абстрактные классы могут иметь статические и нестатические члены.

Интерфейсы имеют только «конечные» (неизменяемые) члены, в то время как абстрактные классы могут иметь конечные и неконечные члены.

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

Множественное наследование может быть достигнуто с помощью интерфейсов, в то время как абстрактные классы не поддерживают множественное наследование.

В Java абстрактный класс может наследовать другой класс и может реализовывать множество интерфейсов, с другой стороны, интерфейс Java может расширять только другой интерфейс.

 

Пример

Приведенный ниже пример позволит вам понять, как интерфейсы и абстрактные классы работают в java:

interface FirstInterface {

    void methodOne();

    void methodTwo();

    void methodThree();

}

abstract class AbstractClass implements FirstInterface {

    public void methodThree() {

        System.out.println("Abstract class Implementing methodThree");

    }

}

class NormalClass extends AbstractClass {

    public void methodOne() {

        System.out.println("Implementing methodOne");

    }

    public void methodTwo() {

        System.out.println("Implementing methodTwo");

    }

    public void methodThree() {

        System.out.println("Implementing methodThree");

    }

}

public class InterfaceExample {

    public static void main(String[] args) {

        FirstInterface obj = new ClassThree();

        obj.methodOne();

        obj.methodTwo();

        obj.methodThree();

    }    

}

 

В этом примере мы создали интерфейс «FirstInterface» , абстрактный класс «AbstractClass» и еще два обычных класса Java и выполнили следующие функции:

  • FirstInterface содержит три абстрактных метода.
  • AbstractClass реализует FirstInterface и переопределяет methodThree ().
  • NormalClass расширяет AbstractClass и переопределяет методы methodOne() и methodTwo() класса FirstInterface.

InterfaceExample — это основной класс, из которого мы создали основной метод и вызвали все методы FirstInterface :

В чем разница между абстрактным классом и интерфейсом в Java

 

Вывод подтвердил работу указанной выше Java-программы.

 

Вывод

В Java абстракция может быть достигнута с помощью абстрактных классов и интерфейсов, и оба они не могут быть созданы. Однако между абстрактными классами и интерфейсами существует множество различий. Например, интерфейсы должны иметь все абстрактные методы, а абстрактные классы могут иметь абстрактные и неабстрактные методы; используя интерфейсы, можно достичь множественного наследования, в то время как абстрактные классы не поддерживают множественное наследование и т. д. В этом посте объясняются различные аспекты абстрактных классов и интерфейсов с помощью подходящих примеров.



2022-04-24T07:00:21
Java

Выходит libmdbx 0.11.7 с переносом проекта на GitFlic, исправлениями ошибок и многим другим.

В выпуск новой библиотеки libmdbx версии 0.11.7, запуск выделяется переносом проекта на сервис GitFlic после того, как администрация GitHub удалила libmdbx вместе с рядом других проектов 15 апреля 2022 года без каких-либо предупреждений и объяснений, а также заблокировала доступ многим разработчикам, связанным с компаниями, попавшими под санкции США.

С точки зрения пользователя все страницы, репозиторий и форки проекта внезапно превратились в страницу «404», без возможности общения и без выяснения причин.



Читать →

10 примеров команд lsof в Linux

10 примеров команд lsof в Linux. В этой статье мы рассмотрим команду lsof с практическими примерами. lsof расшифровывается как «LiSt Open Files» и используется для того чтобы понять, какие файлы открываются какими процессами. Как мы все знаем, Linux/Unix рассматривает все как файлы (в том числе каналы, сокеты, каталоги, устройства и т.д.). Одна из причин использования команды lsof – это ситуация когда диск не может быть размонтирован, так как возникает ошибка: “Файлы используются“. С помощью этой команды мы можем легко определить используемые файлы.




1. Вывод всех открытых файлов с помощью команды lsof




В приведенном ниже примере lsof в Linux будет показан список открытых файлов. В данном выводе отображаются такие столбцы, как Command, PID, USER, FD, TYPE и т.д.




lsof







Разделы и их значения говорят сами за себя. Однако мы рассмотрим столбцы FD&TYPE более подробно:




FD – обозначает дескриптор файла и принимает следующие значения как:




  • cwd – текущий рабочий каталог
  • rtd – корневой каталог
  • txt – текст программы (код и данные)
  • mem – файл памяти




Кроме того, в столбцах FD такие номера, как 1u, являются фактическим дескриптором файла, а за ним следует один из флагов u, r, w как режим доступа:




  • r – доступа для чтения.
  • w – доступа для записи.
  • u – чтения и записи.




TYPE – файлов и их идентификация:




  • DIR – директория
  • REG – обычный файл
  • CHR – специальный символьный файл.
  • FIFO – First In First Out




2. Список открытых пользовательских файлов




Приведенная ниже команда отобразит список всех открытых файлов пользователя sedicomm:




lsof -u sedicomm




3. Поиск процессов, работающих на конкретном порту




Чтобы узнать все запущенные процессы на определенном порту, просто используйте следующую команду с флагом -i. В приведенном ниже примере будут выведены все запущенные процессы порта 22:




# lsof -i TCP:22



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)

sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)




4. Вывод открытых файлов IPv4 и IPv6




В приведенном ниже примере lsof в Linux показаны только сетевые файлы IPv4 и IPv6, выведенные с помощью отдельных команд:




1# lsof -i 42​3COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME4rpcbind 1203 rpc # lsof -i 4



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc

rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954

rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)

avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns

avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600




# lsof -i 6



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc

rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954

rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)

rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800

rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)

cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)




5. Вывод открытых файлов диапазона портов TCP 1-1024




Для вывода всех запущенных процессов открытых файлов TCP-порт меняется в диапазоне 1-1024.




# lsof -i TCP:1-1024



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)

cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)

sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)

master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)

sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)

sshd 1838 sedicomm 3u IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)

sshd 1871 root 3r IPv4 15842 0t0 TCP 192.168.0.2:ssh->192.168.0.1:groove (ESTABLISHED)

httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)

httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)




6. Исключение пользователей с использованием символа «^»




В этом примере lsof в Linux мы исключили пользователя root. Вы же можете исключить конкретного пользователя, используя «^» с командой приведённой ниже:




# lsof -i -u^root



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc

rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954

rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)

rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc

rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954

rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)

avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns

avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600

rpc.statd 1277 rpcuser 5r IPv4 11836 0t0 UDP *:soap-beep

rpc.statd 1277 rpcuser 8u IPv4 11850 0t0 UDP *:55146

rpc.statd 1277 rpcuser 9u IPv4 11854 0t0 TCP *:32981 (LISTEN)

rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800

rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)




7. Узнайте, какие файлы и команды использует пользователь?




Приведенный ниже пример показывает, что пользователь sedicomm использует такие команды, как ping и /etc.




# lsof -i -u sedicomm



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

bash 1839 sedicomm cwd DIR 253,0 12288 15 /etc

ping 2525 sedicomm cwd DIR 253,0 12288 15 /etc




8. Вывод списка всех сетевых подключений




Следующая команда с опцией «-i» выводит список всех сетевых подключений «LISTENING & ESTABLISHED»:




# lsof -i



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc

rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954

rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)

avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns

avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600

rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)

cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)

cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)

sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)

master 1551 root 12u IPv4 12896 0t0 TCP localhost:smtp (LISTEN)

master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)

sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)

httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)

httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)

clock-app 2362 narad 21u IPv4 22591 0t0 TCP 192.168.0.2:45284->www.gov.com:http (CLOSE_WAIT)

chrome 2377 narad 61u IPv4 25862 0t0 TCP 192.168.0.2:33358->maa03s04-in-f3.1e100.net:http (ESTABLISHED)

chrome 2377 narad 80u IPv4 25866 0t0 TCP 192.168.0.2:36405->bom03s01-in-f15.1e100.net:http (ESTABLISHED)




9. Поиск по PID




В приведенном ниже примере показано только те выводы, чей PID равен 1:




# lsof -p 1



COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

init 1 root cwd DIR 253,0 4096 2 /

init 1 root rtd DIR 253,0 4096 2 /

init 1 root txt REG 253,0 145180 147164 /sbin/init

init 1 root mem REG 253,0 1889704 190149 /lib/libc-2.12.so

init 1 root mem REG 253,0 142472 189970 /lib/ld-2.12.so




10. Завершение всей активности конкретного пользователя




Иногда вам может потребоваться завершить все процессы для конкретного пользователя. Команда ниже завершает все процессы пользователя sedicomm:




# kill -9 `lsof -t -u sedicomm`




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




Источник: https://blog.sedicomm.com/2020/03/19/10-primerov-komand-lsof-v-linux/



2022-04-23T02:29:41
Утилиты командной строки