Инициируйте init сценарий, когда определенное устройство возросло, и модуль ядра был загружен

Необходимо было бы использовать что-то большее чем просто sort команда. Сначала grep b строки, затем d строки и затем сортируют что-либо без b или d в конце этого.

grep '^b' myfile > outfile
grep '^d' myfile >> outfile
grep -v '^b' myfile | grep -v '^d' | sort >> outfile
cat outfile

приведет к:

b
d
a
c

Это предполагает, что строки запускаются с 'шаблона' b и d если это - целый шаблон, или что-то в строке можно не учесть каре (^)

Короткий эквивалент был бы:

(grep '^b' myfile ; grep '^d' myfile ; grep -v '^b' myfile | grep -v '^d' | sort)
5
04.03.2018, 17:24
2 ответа

Я не знаю точно о файле init.d, но правило udev для выполнения скрипта на устройстве может выглядеть так:

ACTION=="add", ATTRS{idVendor}=="VID", ATTRS{idProduct}=="PID", RUN+="/path/to/executable"

Вам следует немного покопаться в udevadm, чтобы узнать больше о том, как обычно добавляется устройство и как загружаются его модули. Там же вы найдете правильные значения для VID и PID.

Принимает ли он комбинацию и устройства, и модуля ядра?

Да. Ну... нет. Может быть? Ответ на этот вопрос полностью зависит от уровня, на котором вы перехватываете устройство. udev должен делать много вещей от точки, в которой он изначально обнаруживает устройство, до точки, в которой он полностью загрузил и инициализировал устройство, и это можно считать до .

Некоторые из этих вещей вполне вероятны:

  • изначальное обнаружение аппаратуры на его родительской шине/устройстве/подсистеме

  • поиск и загрузка соответствующего модуля ядра

  • , заполняющего файловую систему /dev devfs с соответствующим специальным файлом устройства

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

Вы можете указать правило для всех или любого из этих уровней действия. Вы также можете udevadm trigger или monitor или несколько других вещей непосредственно в реальном времени, чтобы точно определить, какими могут быть эти уровни действий.

Я рекомендую вам внимательно ознакомиться с этой информацией , если вы хотите подробнее с ней ознакомиться.

.
3
27.01.2020, 20:40

Для этого используйте задание Upstart:

# Ensures that the device is up and filesystem is too
start on filesystem and net-device-up IFACE=ib0
stop on runlevel [016]

# Ensures that module is loaded
pre-start exec modprobe -q knem

exec /path/to/exec
1
27.01.2020, 20:40

Теги

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