LINUX.ORG.RU

pyudev странное поведение

 


0

1

Имеются две абсолютно идентичные системы с ubuntu focal.

на обеих висит скрипт, который мониторит подключение SD-карт и производит определенные действия при подключении. Проблема состоит в том, что на одной системе pyudev показывает извлечение карты, а на второй нет.

вот кусок кода демона на питоне

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from daemon3x import daemon

import os
import sys
import pyudev
import subprocess
import time
import re
from configparser import ConfigParser



def start_pyudev():

    context = pyudev.Context()
    monitor = pyudev.Monitor.from_netlink(context)
    #monitor.filter_by(subsystem='block', device_type='partition')
    monitor.filter_by(subsystem='block'
                      )
    monitor.start()

    for device in iter(monitor.poll, None):
        print('event %s' %device)
        print('node: %s' %device.device_node)
        print('action: %s' %device.action)

        log('usb %s %s' %(device.action, device.device_node))

на первой системе, которая работает нормально, выдает при подключении следующее

# INSERT

event Device('/sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/host6/target6:0:0/6:0:0:0/block/sdb')
node: /dev/sdb

action: change

event Device('/sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/host6/target6:0:0/6:0:0:0/block/sdb')

node: /dev/sdb

action: change

event Device('/sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/host6/target6:0:0/6:0:0:0/block/sdb/sdb1')

node: /dev/sdb1

action: add



# REMOVE

event Device('/sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/host6/target6:0:0/6:0:0:0/block/sdb')

node: /dev/sdb

action: change

event Device('/sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/host6/target6:0:0/6:0:0:0/block/sdb/sdb1')

node: /dev/sdb1

action: remove

на второй системе при первом подключении все работает, но при извлечении карты выдает только

event Device('/sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/host6/target6:0:0/6:0:0:0/block/sdb')

node: /dev/sdb

action: change



и потом, независимо от того втыкается карта или достается, видим только change на /dev/sdb, a /dev/sdb1 remove не происходит.

В трее тоже висит иконка USB, как будто карта еще не извлечена...

Куда копать?

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.