Как перезагрузить правила udev без перезагрузки?

Как перезагрузить правила udev, чтобы можно было создать только что созданный?

Я запускаю Arch Linux, и у меня нет команды udevstart.

Также отмечен /etc/rc.d, там нет службы udev.

164 голоса | спросил daisy 26 Mayam12 2012, 04:34:31

6 ответов


170
# udevadm control --reload-rules && udevadm trigger
ответил Ignacio Vazquez-Abrams 26 Mayam12 2012, 04:59:08
61

Udev использует механизм inotify для просмотра изменений в каталоге правил, как в библиотеке, так и в локальной конфигурации деревья (обычно расположены в /lib/udev/rules.d и /etc/udev/rules.d). Поэтому при изменении файла правил вам ничего не нужно делать.

Вам нужно только оповестить демона udev явно, если вы делаете что-то необычное, например, если у вас есть правило, которое включает файлы в другой каталог. Затем вы можете использовать обычное соглашение, чтобы попросить демонов перезагрузить их конфигурацию: отправьте SIGHUP (pkill -HUP udevd). Или вы можете использовать команду udevadm : udevadm control --reload-rules.

Правила udev применяются только при добавлении устройства. Если вы хотите повторно применить правила к уже подключенному устройству, вам нужно сделать это явно, вызвав udevadm trigger с правильными параметрами, чтобы соответствовать устройствам (устройствам), чья конфигурация изменилась, например. udevadm trigger --attr-match=vendor='Yoyodyne' --attr-match=model='Frobnicator 300'.

ответил Gilles 28 Mayam12 2012, 04:55:12
17

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

Иногда вы получаете неправильное соответствие номеров Ethernet-устройств и MAC-адресов. Иногда это действительно важно, например, при работе в виртуальной машине, и каждое устройство назначается другой VLAN.

  1. Отключите сетевые интерфейсы, затем
  2. изменить /etc/udev/rules.d/70-persistent-net.rules (или его эквивалент)
  3. перезагрузка с помощью udevadm control --reload-rules
  4. повторный запуск с помощью udevadm trigger --attr-match=subsystem=net
  5. довести сетевые интерфейсы вверх.

Я был удивлен, как хорошо это сработало.

ответил Otheus 21 FebruaryEurope/MoscowbFri, 21 Feb 2014 17:51:46 +0400000000pmFri, 21 Feb 2014 17:51:46 +040014 2014, 17:51:46
12

Я не уверен, что это применимо, и это, безусловно, более старая должность, но она довольно сильно показала мой веб-поиск для информации udev, поэтому я подумал, что могу поделиться некоторыми знаниями.

Вы можете запускать правила udev вручную для определенных устройств. Это относится только к дистрибутивам, связанным с redhat (centos fedora и т. Д. И т. Д.).

После внесения соответствующих изменений в файл правил (/etc/udev/rules.d/whateveryoucalledyourrules) вы можете выполнить эхо-код change в UUE-устройство устройства.

echo change > /sys/block/devname/partname1/uevent

Это приведет к чтению правила udev только для этого устройства. Гораздо лучше и более целеустремленно, на мой взгляд.

ответил mbadmin 10 J0000006Europe/Moscow 2015, 03:11:02
3

Для меня ниже последовательность команд работает так, как вам нужно.

Я изменил код /etc/udev/rules.d/70-persistent-net.rules, чтобы изменить номер eth и перезагрузить их без перезагрузки.

/etc/init.d/networking stop
/etc/init.d/udev stop
udevadm control --reload-rules
/etc/init.d/udev start
/etc/init.d/networking start

Следуя этому, он был успешно загружен во время выполнения без перезагрузки машины.

Любое предложение или рекомендации по этому поводу приветствуются, поскольку я открыл это самостоятельно, читая страницы руководства.

ответил Aditya Malviya 13 J0000006Europe/Moscow 2016, 17:34:45
2

Я добавляю ответ correct здесь, потому что мне потребовалось некоторое время, чтобы заметить это в комментарии от @enthusiasticgeek. Все, что вам нужно сделать (если вы на консоли сервера - ясно, что это плохо, если вы находитесь в ssh'd!):

  1. Получить список используемых интерфейсных модулей:

cat /etc/udev/rules.d/70-persistent-net.rules | grep "PCI device" | perl -pe 's/.*\((\w+)\).*/$1/g'| uniq

В моем случае это igb, поэтому он печатает именно это.

  1. введите sudo rmmod igb (замените igb на ваш драйвер карты, полученный с шага 1.

next, отредактируйте /etc/udev/rules.d/70-persistent-net.rules по мере необходимости, затем снова загрузите модуль, используя modprobe igb, снова заменив igb с вашим.

ответил Clayton Dukes 22 J0000006Europe/Moscow 2017, 22:41:50

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132