Найти версию USB по метке диска в Unix

El usuario ilkkachu dio una buena explicación de cómo el almacenamiento en búfer afecta la salida. Mi respuesta describe lo que sucedería si elimina el almacenamiento en búfer, p. reemplazando las llamadas fprintfcon llamadas a write. En este caso, obtendría una alternancia estricta de as y bs. Esto se debe a que la llamada a writeprovoca una reprogramación :escribiendo en bloques de un proceso, dando el turno al otro proceso, y así sucesivamente.

Imaginemos qué pasaría si la llamada a escribir no se bloqueara. Entonces tendríamos que considerar escalas de tiempo :obtendría ejecuciones mucho más largas de as y bs que solo uno o dos a la vez, porque los procesadores modernos son capaces de ejecutar miles de millones de instrucciones por segundo, pero el la frecuencia de programación es típicamente algo entre 100 Hz y 1000 Hz. Un proceso podría ejecutar hasta decenas de millones de instrucciones antes de que se anule y el otro proceso esté programado para ejecutarse. Incluso teniendo en cuenta la sobrecarga de llamadas al sistema, esto daría tiempo al proceso para imprimir cadenas muy largas de aso bs consecutivos.

-121 ---118524 ​​-

Las comillas dobles le dicen al shell que deje el *tal como está -en lugar de expandirlo. Esto funcionará:

device="a"
ls "/dev/sd${device}"*
0
07.02.2017, 18:37
2 ответа

Это специфичная для системы вещь, но для Linux (а не, скажем, BSD и т. Д.):

Если у вас есть имя устройства (которое дает вам lsblk), то:

$ udevadm info -a /dev/sdf1
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/host16/target16:0:0/16:0:0:0/block/sdf/sdf1':
    KERNEL=="sdf1"
⋮
  looking at parent device '/devices/pci0000:00/0000:00:1a.7/usb1/1-2':
    KERNELS=="1-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
⋮
    ATTRS{speed}=="480"

Я подозреваю, что «скорость» - это то, что вы ищете. Если нет, там также есть busnum и devnum , которые соответствуют шине bus: device , заданной lsusb .

Это также дает вам представление о том, как это сделать вручную: вы смотрите в / sys . Вы можете найти, где начать, с помощью readlink -f / sys / block / sdf , который сообщает мне /sys/devices/pci0000:00/0000:00:1a.7/usb1/1-2 /1-2:1.0/host16/target16:0:0/16:0:0:0/block/sdf. Затем вы можете удалить конечные каталоги, пока не вернетесь на USB-устройство. Тогда скорость , busnum , devnum и т. Д. - это просто файлы, которые вы можете читать.

0
28.01.2020, 02:46

Метка устанавливается пользователем или может быть установлена при форматировании файловой системы USB-накопителя или после этого. Используйте команду lsusb -v .....

1
28.01.2020, 02:46

Теги

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