- Как узнать кто использует модуль ?
- Re: Как узнать кто использует модуль ?
- Re: Re: Как узнать кто использует модуль ?
- Re: Re: Re: Как узнать кто использует модуль ?
- Re: Re: Re: Re: Как узнать кто использует модуль ?
- Re: Как узнать кто использует модуль ?
- Re: Re: Как узнать кто использует модуль ?
- Re: Re: Re: Как узнать кто использует модуль ?
- узнать, какой процесс использует сеть
- Re: узнать, какой процесс использует сеть
- Re: узнать, какой процесс использует сеть
- Re: узнать, какой процесс использует сеть
- Re: узнать, какой процесс использует сеть
- Re: узнать, какой процесс использует сеть
- Как в Linux найти, кто использует файл
- Модули ядра Linux
- Модули ядра Linux
- Все модули
- Что загружено?
- Запуск модулей ядра
- Удаление модулей ядра
- Блокирование загрузки модулей
- Автозагрузка модулей
- Установка модулей ядра Linux
- Выводы
Как узнать кто использует модуль ?
Ядро 2.4.26 мать nForce2. Почему-то перестал играть звук, такое впечатление что кто-то занял. Смотрю какие модули используются.
Пробую сделать rmmod via82cxxx_audio пишет:
via82cxxx_audio: Device or resource busy
Кем busy ? lsmod не показывает.
lsof | grep dsp то-же ничего не дает.
lsof | grep mixer то-же ничего не дает.
Опции —force у rmmod нет (я так понимаю оно в 2.6.x появилось).
Как узнать кто использует модуль ?
Re: Как узнать кто использует модуль ?
попробуйте прочитать man lsof
Re: Re: Как узнать кто использует модуль ?
ЫЫЫ ? Не врубаюсь 🙁
Re: Re: Re: Как узнать кто использует модуль ?
сорри, херню написал — не понял сразу, что требуется
Re: Re: Re: Re: Как узнать кто использует модуль ?
можно попробовать так
# modprobe —show-depends snd_es18xx
insmod /lib/modules/2.6.7-gentoo-r11/kernel/sound/core/snd.ko cards_limit=1
insmod /lib/modules/2.6.7-gentoo-r11/kernel/sound/core/seq/snd-seq-device.ko
insmod /lib/modules/2.6.7-gentoo-r11/kernel/sound/core/snd-rawmidi.ko
insmod /lib/modules/2.6.7-gentoo-r11/kernel/sound/drivers/mpu401/snd-mpu401-uart.ko
insmod /lib/modules/2.6.7-gentoo-r11/kernel/sound/core/snd-hwdep.ko
insmod /lib/modules/2.6.7-gentoo-r11/kernel/sound/core/snd-timer.ko
insmod /lib/modules/2.6.7-gentoo-r11/kernel/sound/drivers/opl3/snd-opl3-lib.ko
insmod /lib/modules/2.6.7-gentoo-r11/kernel/sound/core/snd-page-alloc.ko
insmod /lib/modules/2.6.7-gentoo-r11/kernel/sound/core/snd-pcm.ko
insmod /lib/modules/2.6.7-gentoo-r11/kernel/sound/isa/snd-es18xx.ko
увидишь от кого зависит
Re: Как узнать кто использует модуль ?
Нет я не об этом.
Ты ведь можешь сделать скажем modprobe rtc.
lsmod покажет что модуль загружен. Теперь мы можем его удалить rmmod rtc и он удалится. А если теперь его опять загрузить и запустить скажем mplayer который его будет юзать, то rmmod rtc уже не выйдет сделать,
потому как модуль занял mplayer. Дык вот если бы мы не знали что его занял mplayer — как это узнать .
Re: Re: Как узнать кто использует модуль ?
Наверное только искать кто использует устройство (файл) просмотром /proc/fd.
Re: Re: Re: Как узнать кто использует модуль ?
Это как раз lsof и делает. Ничего не понимаю.
Источник
узнать, какой процесс использует сеть
В kinternet вижу, что каждую секунду исходящий траффик поднимается до 64.128 Б/с и сразу падает до нуля и так по кругу. Прибил kopete, ktorrent, проверил konqueror страницы нигде не грузит — все равно этот маленький траффик идет. Как определить, что это такое? — куда он отправляется и каким процессом? раньше помню такого не было — останавливал все соединения и kinternet успакавался
Re: узнать, какой процесс использует сеть
Открой для себя команду netstat
Re: узнать, какой процесс использует сеть
>все равно этот маленький траффик идет. Как определить, что это такое? — куда он отправляется и каким процессом?
Сначала лучше посмотреть
остальные ключи по обстоятельствам — иначе без них может просто завалить выводом весь экран или лучше вообще перенаправить вывод в файл. Потом когда определишь с какого порта идет соединение или на какой порт приходит можно узнать что за процесс является его хозяином как уже писали выше
#netstat -A inet –program
но мне лично больше нравится lsof
Re: узнать, какой процесс использует сеть
sudo netstat -ap
Re: узнать, какой процесс использует сеть
Спасибо за информацию, lsof выглядит поприятнее, netstat похоже нужно еще помучать грепами и пайпами перед тем, как получить тоже самое.
Re: узнать, какой процесс использует сеть
> netstat похоже нужно еще помучать грепами и пайпами
Источник
Как в Linux найти, кто использует файл
Оригинал: How to Find Out Who is Using a File in Linux
Автор: Aaron Kili
Дата публикации: 29 марта 2019 г.
Перевод: В.Костромин
Дата перевода: 13 мая 2020 г.
В этой статье мы расскажем, как узнать, кто использует тот или иной файл в Linux. Это позволит вам найти системного пользователя или процесс, который использует открытый файл.
Мы можем использовать команду lsof, чтобы узнать, использует ли кто-то файл, и если да, то кто именно. Эта команда обращается к памяти ядра в поиске открытых файлов и выводит список всех открытых файлов. Открытый файл может быть обычным файлом данных, каталогом, специальным файлом устройства, символьным файлом устройства, потоком, сетевым файлом или относиться к какому-то еще типу файлов — потому что в Linux все является файлом.
Lsof используется файловой системой, чтобы определить, кто использует какие-либо файлы в этой файловой системе. Вы можете запустить команду lsof в файловой системе Linux, и выходные данные идентифицируют владельца и информацию о процессах, использующих файл, как показано в следующем листинге выходных данных.
Список всех открытых в Linux файлов
Чтобы вывести список файлов, открытых для конкретного пользователя, выполните следующую команду:
Список файлов, открытых конкретным пользователем (при использовании в вашей системе замените tecmint действительным именем пользователя)
Еще одно важный случай применения команды lsof — определение процесса, использующего определенный порт. Например, чтобы определить, какой процесс использует порт 80, можно воспользоваться следующим вариантом запуска команды lsof.
Определение процесса, прослушивающего порт
Важное замечание: Поскольку lsof в поисках открытых файлов обращается к памяти ядра, быстрые изменения в памяти ядра могут привести к непредсказуемому результату. Это один из главных недостатков использования команды lsof.
За дополнительной информацией обращайтесь к странице руководства lsof man:
На этом все! В этой статье мы объяснили, как узнать, кто использует тот или иной файл в Linux. Мы показали, как определить владельца и информацию о процессах, использующих открытый файл.
Об авторе
Aaron Kili — энтузиаст Linux и свободного ПО, системный администратор, веб-разработчик и в настоящее время создатель контента для TecMint, который любит работать с компьютерами и твердо верит в обмен знаниями.
Вы можете найти на нашем сайте более подробные статьи о команде lsof:
Источник
Модули ядра Linux
Как вы знаете из статьи что такое ядро Linux, ядро является монолитным. Это значит, что весь исполняемый код сосредоточен в одном файле. Такая архитектура имеет некоторые недостатки, например, невозможность установки новых драйверов без пересборки ядра. Но разработчики нашли решение и этой проблеме, добавив систему модулей.
Ядро Linux позволяет драйверам оборудования, файловых систем, и некоторым другим компонентам быть скомпилированными отдельно — как модули, а не как часть самого ядра. Таким образом, вы можете обновлять драйвера не пересобирая ядро, а также динамически расширять его функциональность. А еще это значит, что вы можете включить в ядре только самое необходимое, а все остальное подключать с помощью модулей. Это очень просто.
Модули ядра Linux
В этой статье мы рассмотрим модули ядра Linux, основы работы с ними, просмотр уже загруженных модулей, загрузку, установку и отключение модулей. А также полное отключение, добавление в черный список и добавление новых модулей ядра.
Модули ядра Linux собираются только под определенную версию ядра, есть способ запуска модуля независимо от версии ядра, если они совместимы с помощью dkms, но об этом мы поговорим позже.
Находятся все модули в папке /lib/modules/. Учитывая, что модули рассчитаны только для определенной версии ядра, то в этой папке создается отдельная подпапка, для каждой установленной в системе версии ядра. В этой папке находятся сами модули и дополнительные конфигурационные файлы, модули отсортированы по категориям, в зависимости от назначения например:
Перед тем как переходить к практике, давайте коротко рассмотрим основные команды для управления модулями.
- lsmod — посмотреть загруженные модули
- modinfo — информация о модуле
- insmod — загрузить модуль
- rmmod — удалить модуль
Работа с модулями ядра Linux выполняется, в основном, с помощью этих команд, но могут использовать и другие.
Все модули
Такая задача возникает нечасто, но если вы хотите посмотреть все установленные модули ядра Linux в системе, делается очень просто. Все модули расположены в папке /lib/modules, а поэтому очень просто вычислить их все одной командой, или даже просто зайти в папку файловым менеджером и посмотреть.
В Ubuntu команда будет выглядеть вот так:
dpkg -S *.ko | grep /lib/modules
Можно смастерить такую конструкцию с помощью find:
find /lib/modules -name *.ko
Можем искать только для текущего ядра:
find /lib/modules/$(uname -r) -name *.ko
Также, все модули записаны в конфигурационном файле /lib/modules/modules.aliases, поэтому мы можем просто посмотреть его содержимое:
Если хотим проверить установлен ли определенный модуль ядра Linux, отфильтруем вывод любой из команд с помощью grep:
find /lib/modules -name *.ko | grep vbox
Что загружено?
Все информация о загруженных модулях хранится в файле /proc/modules, мы можем ее вывести командой:
Но для этого дела есть более цивилизованные методы. Это утилита lsmod и modinfo. Чтобы посмотреть загруженные модули ядра linux выполните:
Удобно проверять загружен ли модуль с помощью grep:
sudo lsmod | grep vbox
А более подробную информацию о каждом модуле можно получить с помощью утилиты modinfo:
Здесь вы можете увидеть файл модуля, его лицензию, автора и зависимости. Зависимости — это те модули, которые должны быть загружены для его нормальной работы. К сожалению, не для всех модулей доступно нормальное описание, но вы можете попробовать посмотреть описание зависимостей модуля.
Запуск модулей ядра
Загрузить модуль ядра Linux можно с помощью команд modprobe или insmod. Например, загрузим модуль vboxdrv
sudo modprobe vboxdrv
Чтобы загрузить модуль ядра linux с помощью insmod необходимо передать адрес файла модуля:
sudo insmod /lib/modules/4.1.20-11-default/weak-updates/misc/vboxdrv.ko
Напоминаю, что его можно узнать с помощью команды modinfo. Запуск модуля ядра Linux предпочтительно выполнять с помощью modprobe, поскольку эта команда не только находит файл модуля в файловой системе, но и загружает все его зависимости.
Удаление модулей ядра
Здесь аналогично две команды — modprobe, позволяет удалить модуль если ей передать опцию -r, а также есть команда rmmod. Начнем с modprobe:
sudo modprobe -r vboxdrv
Другая команда в этом случае выглядит немного проще:
sudo rmmod vboxdrv
Если вы получили ошибку во время выгрузки модуля, например: rmmod: ERROR: Module vboxdrv is in use by: vboxnetadp vboxnetflt, значит он еще используется другими модулями, и сначала нужно выгрузить их. В данном случае это vboxnetadp и vboxnetflt. Правильно отработавшая команда не должна ничего возвращать.
rmmod vboxnetadp vboxnetflt
Блокирование загрузки модулей
Иногда, во время загрузки системы для используемых нами устройств, загружаются не те модули ядра Linux, они либо не поддерживают нужную функциональность либо конфликтуют с другими модулями. Ярким примером можно назвать загрузку драйвера b43 вместо brcmsmac для беспроводных адаптеров Broadcom. Чтобы решить эту проблему вы можете добавлять модули в черный список. Для этого достаточно добавить одну строчку в файл /etc/modprobe.d/blacklist.conf:
sudo vi /etc/modprobe.d/blacklist.conf
Этот код добавит в черный список модуль b43.
Автозагрузка модулей
Кроме чёрного списка существует отдельный каталог, в котором можно настроить автоматическую загрузку модулей при старте системы. Это /etc/modules.load.d/. Этот каталог тоже содержит конфигурационные файлы с расширением *.conf, в которых перечислены все модули, которые надо загружать при старте системы. Для добавления своего модуля можно воспользоваться файлом /etc/modules.load.d/modules.conf. Например, добавим brcmsmac:
sudo vi /etc/modules.load.d/modules.conf
Установка модулей ядра Linux
Собранные для этой версии ядра модули вы можете просто скопировать в нужную папку, собственно, мы так и поступаем, когда собираем ядро из исходников. Но с проприетарными драйверами и другими внешними драйверами, не поставляемыми в комплекте с ядром дело обстоит иначе. Эти модули поддерживают несколько версий ядра, но для их установки используется специальная технология — DKMS (Dynamic Kernel Module Support). Причем модуль, установленный таким образом один раз, будет пересобираться для каждой новой версии ядра автоматически. Обычно такие модули поставляются в виде пакетов, которые устанавливаются как и все другие приложения пакетным менеджером. Ручная установка модулей с помощью dkms выходит за рамки данной статьи.
Выводы
Скорее всего, вам редко придется возиться с этими модулями. Но работа с модулями ядра будет необходима, если ваш дистрибутив не поддерживает аппаратное обеспечение вашего устройства из коробки, а также когда вы работаете со сторонним программным обеспечением, таким как VirtualBox, Vmware и т д. Но очень полезно знать как обращаться с модулями, когда вам нужно добавить или удалить их. Даже если у вас нет необходимости в этом сейчас, вы можете протестировать, как все работает, чтобы быть вооруженным потом.
Источник