නැවත පණගැන්වීමකින් තොරව udev නීති රීලෝඩ් කරන්නේ කෙසේද?


226

අලුතෙන් සාදන ලද එකක් ක්‍රියාත්මක වීමට හැකි වන පරිදි යමෙක් udev නීති රීලෝඩ් කළ යුත්තේ කෙසේද?

මම ආරුක්කු ලිනක්ස් ධාවනය කරමි, මට udevstartමෙහි විධානයක් නොමැත.

එසේම පරීක්ෂා කර ඇත /etc/rc.d, එහි udev සේවාවක් නොමැත.


1
Udev හි වඩාත් නවතම අනුවාදයන් inotify සහාය අතහැර දමා ඇති බව කරුණාවෙන් සලකන්න.
කොලින් ගුත්‍රි

කුමක්ද udev? එය කළමනාකරු ද /dev?
සැන්ඩ්බර්ග්

1
And සැන්ඩ්බර්ග් ඔව් එය ලිනක්ස් පද්ධතිවල ප්ලග්-එන්-ප්ලේය හසුරුවයි.
ආරොන් ඩී මාරස්කෝ

Answers:


261
# udevadm control --reload-rules && udevadm trigger

4
ඔබට udevtriggerපසුව අවශ්‍යද?
නිල්ස්

40
Ils නිල්ස් ඇත්ත වශයෙන්ම, ඔබට ඒ udevtriggerවෙනුවට (හෝ udevadm triggerබොහෝ බෙදාහැරීම් මත) අවශ්‍ය විය හැකිය (එනම්, හෝ උපාංගය පිටතට ගෙන එය පිටුපසට). --reload-rulesඑය ස්වයංක්‍රීයව සිදුවන බැවින් සෑම විටම පාහේ නිෂ් less ල වේ.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

12
udevadm triggerCentOS 6 හි උපක්‍රමය මා වෙනුවෙන් කළා.
astrostl

3
udevtriggerනැත්නම් udevadm triggerමට වැඩ කළේ නැහැ. මොඩියුලය මුදා හැරීම සහ පැටවීමෙන් පසුව සමහර උපාංග ක්‍රියා කරන බව මට පෙනී ගියේය (එය පැටවිය හැකි මොඩියුලයක් යැයි උපකල්පනය කර). මා සොයාගත් දෙය නම් පද්ධතිය නැවත ආරම්භ කිරීම අවශ්‍ය නොවේ. ජාල උපාංගයක් සඳහා උදාහරණයක් ලෙස, මම rmmod ixgbe, rmmod tg3, rmmod e1000පසුව modprobe ixgbe, modprobe tg3, modprobe e1000ජාල ධාවකය වර්ගය මත රඳා පවතී.
උද්යෝගිමත්

2
මට මෙයින් sudo udevadm triggerපසුව කළ යුතුව තිබුනේ , සුඩෝ ඉවත් කිරීමෙන් කිසිදු දෝෂයක් නොපෙනුනත්, මම එය ධාවනය කරන තුරු කිසිදු වෙනසක්
නොපෙනුණි

70

පුස්තකාලයේ සහ දේශීය වින්‍යාසකරණ ගස්වල (සාමාන්‍යයෙන් පිහිටා ඇති සහ ) නීති නාමාවලියෙහි වෙනස්කම් නිරීක්ෂණය කිරීම සඳහා උදෙව් විසින් inotify යාන්ත්‍රණය භාවිතා කරයි . එබැවින් බොහෝ විට ඔබ නීති ගොනුවක් වෙනස් කරන විට කිසිවක් කිරීමට අවශ්‍ය නොවේ./lib/udev/rules.d/etc/udev/rules.d

ඔබ අසාමාන්‍ය දෙයක් කරන්නේ නම් ඔබට udev ඩීමන් වෙත පැහැදිලිව දැනුම් දිය යුතුය, උදාහරණයක් ලෙස ඔබට වෙනත් නාමාවලියක ගොනු ඇතුළත් වන රීතියක් තිබේ නම්. එවිට ඔබට ඩීමන්වරුන්ගේ වින්‍යාසය නැවත පූරණය කිරීමට ඉල්ලීම සඳහා සුපුරුදු සම්මුතිය භාවිතා කළ හැකිය: SIGHUP ( pkill -HUP udevd) යවන්න . නැතහොත් ඔබට udevadmවිධානය භාවිතා කළ හැකිය : udevadm control --reload-rules.

කෙසේ වෙතත්, udev හි විවිධ අනුවාදයන් rules තිහාසිකව රීති ස්වයංක්‍රීයව නැවත පූරණය කිරීම සඳහා විවිධ ප්‍රේරක ඇති බව පරෙස්සම් වන්න. එබැවින් සැකයක් ඇත්නම් අමතන්න udevadm control --reload-rules: එය කෙසේ හෝ හානියක් නොකරනු ඇත.

Udev නීති ක්‍රියාත්මක වන්නේ උපාංගයක් එකතු කළ විට පමණි. දැනටමත් සම්බන්ධ කර ඇති උපාංගයකට නීති රීති නැවත යෙදීමට ඔබට අවශ්‍ය නම්, udevadm triggerවින්‍යාසය වෙනස් වී ඇති උපාංග (ය) සමඟ ගැලපීම සඳහා නිවැරදි විකල්ප සමඟ ඇමතීමෙන් ඔබ මෙය පැහැදිලිව කළ udevadm trigger --attr-match=vendor='Yoyodyne' --attr-match=model='Frobnicator 300'යුතුය.


1
Systemd udev රීති වෙනස්වීම් නැරඹීම සඳහා inotify භාවිතා කරයිද?
ක්‍රේග් මැක්වීන්

මෙම inotifyයාන්ත්රණය හැම විටම udev පාලනය ගොනුව වෙනස් අල්ලා නැත. උදාහරණයක් ලෙස cat > 10-name.rules, අන්තර්ගතය ඇලවීමෙන් මම රීති ගොනුව වෙනස් කිරීමට භාවිතා කරන විට , මට අතින් භාවිතයෙන් රීති නැවත පූරණය කළ යුතුය udevadm. රාස්බියන් ස්ට්රෙච් මත පරීක්ෂා කර ඇත.
ඩැනියෙල් කේ

An ඩැනියෙල්කේ. මෙය මෑතකදී වෙනස් වී තිබේද? IIRC මම මෙම පිළිතුර පළ කරන විට පද්ධතිමය udev සහ පද්ධතිමය නොවන udev යන දෙකම පරීක්ෂා කළ අතර දෙදෙනාම inotify භාවිතා කළ අතර --reload-rulesඑය අවශ්‍ය වූයේ අසාමාන්‍ය අවස්ථාවන්හිදී පමණි.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

Il ගිලස්: සමහර විට ඉහත මගේ උදාහරණය (ෂෙල් යළි හරවා යැවීම භාවිතයෙන් දැනට පවතින රීති ගොනුවක් නැවත ලිවීම) “අසාමාන්‍ය අවස්ථාවක්” ලෙස සැලකිය හැකිය. මම මෙම ගොනුව සංස්කාරකයක් මගින් වෙනස් කළ විට, උදා, vi, inotifyයාන්ත්‍රණය ක්‍රියාත්මක විය.
ඩැනියෙල් කේ.

An ඩැනියෙල්කේ. අහ්, ඒක දැනගන්න එක හොඳයි. එය අසාමාන්‍ය අවස්ථාවක් නොවේ: සමහර කතුවරුන් නැවත ලිවීමෙන් ගොනුව සුරකිනු ඇත (Vim සහ Emacs සමඟ, එය වින්‍යාස කර ඇති ආකාරය මත රඳා පවතී). Udev හසුරුවන්නේ එක් සිද්ධියක් පමණක් බව අමුතුයි - එය මට දෝෂයක් සේ පෙනේ, මන්ද ඒවාට වෙනස් ආකාරයකින් සැලකීමට හේතුවක් මට සිතිය නොහැකි බැවිනි.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

19

මම මෙය එකතු කරන්නේ යම් දවසක මට එය අවශ්‍ය වනු ඇති නිසාය ... නැවතත්.

සමහර විට ඔබට ඊතර්නෙට් උපාංග අංක සහ MAC ලිපින වල වැරදි ගැලපීමක් ලැබේ. සමහර විට මෙය VM එකක ධාවනය වන විට මෙන් වැදගත් වන අතර සෑම උපාංගයක්ම වෙනත් VLAN වෙත පවරා ඇත.

  1. ජාල අතුරුමුහුණත් පහළට ගෙන එන්න
  2. වෙනස් කරන්න /etc/udev/rules.d/70-persistent-net.rules(හෝ ඊට සමාන)
  3. සමඟ නැවත පටවන්න udevadm control --reload-rules
  4. සමඟ නැවත අවුලුවන්න udevadm trigger --attr-match=subsystem=net
  5. ජාල අතුරුමුහුණත් ඉහළට ගෙන එන්න.

මෙය කොතරම් හොඳින් ක්‍රියාත්මක වේදැයි මම පුදුමයට පත් වීමි.


6
Red Hat මත:service network stop && udevadm control --reload-rules; udevadm trigger --attr-match=subsystem=net; service network start
ඇලෙක්සැන්ඩර් ටෝස්ට්ලිං

1
ඩේබියන් පරීක්ෂණයේදී 'udevadm ප්‍රේරකය --attr-match = subystem = net' ක්‍රියා නොකරයි. මට usb ඊතර්නෙට් කාඩ් පත ඉවත් කර ප්ලග් කිරීමට සිදු වූයේ udev නව රීතියක් ඇති කිරීමට පසුවය.
Trismegistos

ක්ලේටන් ඩියුක්ස්ගේ පිළිතුරට අනුව, ට්‍රිස්මෙගිස්ටෝස්, ඉවත් කිරීම / ප්ලග් ජාල ධාවකය ඉවත් කර නැවත පූරණය කිරීමට සමාන බව මම ඔට්ටු ඇල්ලීමට කැමැත්තෙමි.
මයික් එස්

13

මෙය අදාළ වේදැයි මට විශ්වාස නැත, මෙය නියත වශයෙන්ම පැරණි පෝස්ට් එකක් වන නමුත් එය udev තොරතුරු සඳහා මගේ වෙබ් සෙවුම ඉතා ඉහළ මට්ටමක පැවතුනි, එබැවින් මම යම් දැනුමක් බෙදාගනු ඇතැයි සිතුවෙමි.

විශේෂිත උපාංග සඳහා ඔබට udev නීති අතින් ක්‍රියාත්මක කළ හැකිය. මෙය අදාළ වන්නේ රෙඩ්හැට් ආශ්‍රිත ඩිස්ට්‍රෝ (සෙන්ටෝස් ෆෙඩෝරා යනාදිය) සඳහා පමණි

ඔබගේ නීති ගොනුවේ ( /etc/udev/rules.d/whateveryoucalledyourrules) අදාළ වෙනස්කම් සිදු කළ පසු , ඔබට changeඋපාංගයේ uevent වෙත ප්‍රතිරාවය කළ හැකිය .

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

මෙම උපාංගය සඳහා පමණක් udev රීතිය කියවීමට මෙය බල කරයි. මගේ මතය අනුව වඩා හොඳ සහ වඩා ඉලක්ක කර ඇත.


4

මට නම්, පහත දැක්වෙන විධාන අනුක්‍රමය අවශ්‍ය පරිදි ක්‍රියා කර ඇත.

අංකය /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

මෙය අනුගමනය කිරීමෙන්, යන්ත්රය නැවත ආරම්භ නොකර ධාවන කාලය තුළ එය සාර්ථකව පටවා ඇත.

මෑන් පිටු කියවීමෙන් මම මෙය තනිවම සොයාගෙන ඇති බැවින් මේ පිළිබඳ ඕනෑම යෝජනාවක් හෝ නිර්දේශයක් සාදරයෙන් පිළිගනිමු.


2

මම නිවැරදි පිළිතුර මෙහි එක් කරන්නේ @enthusiasticgeek හි අදහස් දැක්වීමේදී එය දැකීමට මට යම් කාලයක් ගත වූ බැවිනි. ඔබ කළ යුතු සියල්ල (ඔබ සේවාදායකයේ කොන්සෝලයෙහි සිටින බව උපකල්පනය කරන්න - පැහැදිලිවම ඔබ ඇතුල් වී ඇත්නම් මෙය කිරීම නරක ය!):

  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පළමු පියවරෙන් ලබාගත් ඔබගේ කාඩ් ධාවකය සමඟ ප්‍රතිස්ථාපනය කරන්න.

ඊළඟට, /etc/udev/rules.d/70-persistent-net.rulesඅවශ්‍ය පරිදි සංස්කරණය කරන්න , ඉන්පසු මොඩියුලය නැවත භාවිතා කර modprobe igbනැවත igbඔබ සමඟ ප්‍රතිස්ථාපනය කරන්න.


මෙය, ඔතියස්ගේ පිළිතුර සමඟ සංයෝජනය වී, යන්ත්‍ර නැවත පණගැන්වීමකින් තොරව මගේ මෙලනොක්ස් ජාල කාඩ්පත් වින්‍යාසය නිවැරදි කිරීමට මට හැකි වූ රහසිගත සෝස් ය. මම විශ්වාස කරන්නේ ධාවකයේ පැටවීම සහ udevadm කියවීම ස්ථිර-net.rules ගොනුව දළ වශයෙන් සමාන වන අතර එය ආරම්භ වන විට පද්ධතිය කරන දෙයට සමාන වේ.
මයික් එස්

1

මෙය ප්‍රධාන පිළිතුරෙන් සුළු වෙනසක් වේ : sudoවිධාන දෙකෙහිම මට අවශ්‍ය බව පෙනේ.

සාර්‍ථක සාක්ෂි: කිරීමට sudo udevadm triggerතත්පර 2 ක් ගතවිය, නමුත් සුඩෝ සමඟ එය කිරීමට ගත වූයේ ගත වූයේ තත්පර 0.2 ක් පමණි. ඉතින් පැහැදිලිවම ඔවුන් මා වෙනුවෙන් එකම දේ කරන්නේ නැහැ. ඒ වෙනුවට මෙය කරන්න:

sudo udevadm control --reload-rules
sudo udevadm trigger

අවසාන වශයෙන් (පහත 2 වන සබැඳිය අනුව), ඔබගේ උපාංගය විසන්ධි කර නැවත එය ඇතුල් කරන්න .

යොමුව:

  1. නැවත පණගැන්වීමකින් තොරව udev නීති රීලෝඩ් කරන්නේ කෙසේද?
  2. /ubuntu/1048870/permission-denied-to-non-root-user-for-usb-device/1187646#1187646

ඉහත පිළිතුරු දෙකම යටතේ අදහස් බලන්න.


0

බහු ජාලයක නම්

cat /etc/udev/rules.d/70-persistent-net.rules | grep "PCI device" | awk '{print $NF}'|sed -e 's/(//g' -e 's/)//g'| uniq > /tmp/listnet
rm -rf /etc/udev/rules.d/70-persistent-net.rules 
for i in $(cat /tmp/listnet); do rmmod $i; modprobe $i;done
service network restart
rm -rf /tmp/listnet
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.