Нахождение символьного устройства в/sys использование сценария Bash?

Просто a bash быстрое использование выстрела pdfjam:

Создайте массив входных параметров:

for k in $(seq 1 ${N_PAGES}); do
    PAGES+=(odd.pdf);
    PAGES+=($k);
    PAGES+=(even.pdf);
    PAGES+=($k);
done

Это должно позволить Вам использовать его в качестве входного списка для pdfjoin:

 pdfjoin ${PAGES[@]} --outfile shuffled.pdf

3
26.10.2013, 04:30
1 ответ

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

Материал как это является невероятно переменным и определенным для устройства. Это - соображения как это, которые требуют адаптеров драйверов/программного обеспечения даже в высокоуровневом программном обеспечении. Таким образом, необходимо, вероятно, привыкнуть к идее, что этот сценарий сделает эту конкретную вещь вместо того, чтобы абстрагировать к некоторому универсальному процессу (который является тем, что я предполагаю, что Вы пытаетесь сделать).

Как немного фона: Каждой подобной шине системе (USB, SCSI, PCI, и т.д.) нужна некоторая форма обращения к устройствам. С lspci это значения, которые Вы видите на крайней левой из каждой строки в выводе по умолчанию.

Сокращенный пример:

[root@hypervisor pyadmin]# lspci
00:00.0 Host bridge: Intel Corporation 5400 Chipset Memory Controller Hub (rev 20)
00:1d.1 USB controller: Intel Corporation 631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (rev 09)
00:1d.2 USB controller: Intel Corporation 631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (rev 09)
04:00.0 PCI bridge: Intel Corporation 6311ESB/6321ESB PCI Express Downstream Port E1 (rev 01)
04:01.0 PCI bridge: Intel Corporation 6311ESB/6321ESB PCI Express Downstream Port E2 (rev 01)
07:05.0 Fibre Channel: QLogic Corp. ISP2422-based 4Gb Fibre Channel to PCI-X HBA (rev 02)
07:06.0 Fibre Channel: QLogic Corp. ISP2422-based 4Gb Fibre Channel to PCI-X HBA (rev 02)
08:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5754 Gigabit Ethernet PCI Express (rev 02)

Адреса PCI являются 08:00.0, 07:06.0, и т.д.

Как Вы сказали, sysfs каталог, на который Вы смотрите, для одного из модулей (usbled) таким образом, Вы смотрите на информацию sysfs, имеет на том модуле, который включает устройства, которые используют модуль (или наоборот, если Вам нравится). 1-1.2:1.0 Вы смотрите на, представляет устройство и ссылается, он - Адрес USB (в терминологии USB "конечная точка").

Таким образом, если бы Вы уже знаете модуль, я в основном отфильтровал бы известные значения и только искал бы dentry's, которые содержат и двоеточия и периоды, поскольку существует очень мало шанса другого dentry в той детали sysfs каталог, когда-либо создаваемый с именем как этот, если это не подключенное устройство.

Я знаю, что это немного повсеместно, но я вполне уверен Ваш ответ там где-нибудь.

2
27.01.2020, 21:28
  • 1
    Спасибо! я также вырыл это, которое, кажется, объясняет схему адресации шины для USB-устройств. (Справедливое предупреждение: страница немного датирована - она была в последний раз изменена в 2007 и относится к 2.4.x ядра.) –  Nathan Osman 28.10.2013, 06:13

Теги

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