Как подсчитать количество открытых файлов и количество файловых дескрипторов

Начальная загрузка

  • Вы не можете вычислять KERNELпри написании правила для USB-устройства, как написал @dirkt.
  • И, к сожалению, устройство не полностью -заполнено в «looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.3/ttyUSB19'» для правильного соответствия (, как вы можете видеть в своем вопросе ).
  • Но udevи другие ваши правила могут помочь! Однако udevadm infoраспечатает необработанную информацию об устройстве.udevadm monitor -u -pпечатает заполненную версию:

    udevadm monitor --help
    
    ...
    -p --property                            Print the event properties
    -k --kernel                              Print kernel uevents
    -u --udev                                Print udev events
    -s --subsystem-match=SUBSYSTEM[/DEVTYPE] Filter events by subsystem
    

Решение

Получить параметры

  1. Извлеките устройство
  2. запустите команду udevadm monitor -kups usbдля получения полностью -заполненных событий
  3. подключить для получения логов

Записать правило

У вас есть два варианта:

  1. Записать правило на основе исходного события KERNEL:

    ACTION=="add", SUBSYSTEM=="usb-serial", ENV{DEVTYPE}=="usb_device", \
      ENV{PRODUCT}=="403/6011/0", SYMLINK+="my_port"
    
  2. Правило записи на основе расширенного UDEVсобытия:

    ACTION=="add", SUBSYSTEM=="usb-serial", ENV{DEVTYPE}=="usb_device", \
      ENV{ID_VENDOR_ID}=="0403", ENV{ID_MODEL_ID}=="6011", SYMLINK+="my_port"
    

Тестовое правило

Вы должны проверить свое правило, чтобы избежать нежелательного поведения перед производством (, например. слишком широкое условие => несколько совпадений => несколько запусков)

  1. Возьмите путь к устройству из выходных данных предыдущего udevadm monitorзапуска (, например.:usb1/1-3в вашем случае)
  2. Запустите udevadm testдля сухой -запустите правила udev:

    udevadm test --action=add /sys/bus/usb/devices/usb1/1-3
    

Примените изменения и попробуйте

  1. Перезагрузить правила:

    udevadm control --reload
    
  2. Запуск USB-устройства по -подключению:

    udevadm trigger -v --action=add --subsystem-match /sys/bus/usb/devices/usb1/1-3
    
2
24.11.2020, 12:11
1 ответ

/proc/PID/fd включает только фактически открытые файлы и сокеты.

lsofтакже включает разделяемые библиотеки.

1
18.03.2021, 22:47

Теги

Похожие вопросы