পুনরায় বুট না করে কীভাবে উদেব বিধিগুলি পুনরায় লোড করবেন?


209

একজনকে কীভাবে ওদেব বিধিগুলি পুনরায় লোড করা উচিত, যাতে নতুন তৈরি হওয়া কোনও কাজ করতে পারে?

আমি আর্চ লিনাক্স চালাচ্ছি, এবং আমার udevstartএখানে কোনও কমান্ড নেই।

এছাড়াও পরীক্ষা করা হয়েছে /etc/rc.d, সেখানে কোনও দেবদেব পরিষেবা নেই।


1
দয়া করে মনে রাখবেন যে udev এর আরও সাম্প্রতিক সংস্করণগুলি ইনোটিফাই সমর্থনটি বাদ দিয়েছে তাই এই দিনগুলিতে পরিবর্তনের বিষয়ে নিয়মগুলি পুনরায় লোড করার প্রয়োজন হয়।
কলিন গুথ্রি

কী udev? এটা কি ম্যানেজার /dev?
স্যান্ডবার্গ

1
@ স্যান্ডবুর্গ হ্যাঁ এটি লিনাক্স সিস্টেমগুলিতে প্লাগ-এন-প্লে পরিচালনা করে।
অ্যারন ডি মারাকো ২

উত্তর:


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

4
আপনার udevtriggerপরে কি দরকার ?
নীল

38
@ নীল প্রকৃতপক্ষে, আপনার udevtriggerপরিবর্তে (বা udevadm triggerবেশিরভাগ বিতরণে) প্রয়োজন হতে পারে (এটি, বা ডিভাইসটি প্লাগ আউট করে এটি ব্যাক করুন)। --reload-rulesএটি স্বয়ংক্রিয়ভাবে ঘটে প্রায় সর্বদা অকেজো।
গিলস

12
udevadm triggerCentOS 6 এ আমার জন্য কৌশলটি করেছিলেন।
অ্যাস্ট্রোস্টল

3
udevtriggerবা udevadm triggerআমার জন্য কাজ করে না। আমি দেখতে পেলাম যে কয়েকটি ডিভাইস একই জন্য মডিউলটি লোড এবং লোড করার পরে কাজ করবে (ধরে নিলে এটি লোডযোগ্য মডিউল। যা আমি জানতে পেরেছি তা অগত্যা সিস্টেমটিকে রিবুট করতে হবে না। একটি নেটওয়ার্ক ডিভাইসের জন্য উদাহরণ, আমি কি rmmod ixgbe, rmmod tg3, rmmod e1000তারপর modprobe ixgbe, modprobe tg3, modprobe e1000নেটওয়ার্ক ড্রাইভার ধরনের উপর নির্ভর করে।
উত্সাহী

1
উত্তরগুলির মধ্যে উল্লিখিত কোনও কিছুইই আমার পক্ষে ডেবিয়ান জেসি (8.0) তে কাজ করে নি। যে জিনিসটি কাজ করেছিল তা এখানেip link set $oldname name $newname উল্লেখ করা হয়েছে । আমার ক্ষেত্রে, আমার lanএকটি ব্রিজযুক্ত আইফেস (কেভিএমের জন্য) দিয়ে একটি আইফেস প্রতিস্থাপন করা প্রয়োজন , এবং সেইজন্য মূল - এখন অন্তর্নিহিত - আইফেসটির পুরানো নাম eth1, ফিরে পাওয়া উচিত ছিল। সুতরাং কৌশলটি ছিল: 1) আইফেসকে নামিয়ে আনুন; 2) নেটওয়ার্ক কনফিগারেশন ঠিক করুন; 3) udev নামকরণের নিয়ম ফাইল আপডেট করুন; ৪) আইফেস ব্যবহার করে নতুন নামকরণ ip link...; 5) ব্রিজটি উপরে আনুন।
কোস্টিক্স

69

Udev ব্যবহার inotify , বিধি ডিরেক্টরির মধ্যে পরিবর্তনের জন্য ঘড়ি উভয় লাইব্রেরিতে এবং স্থানীয় কনফিগারেশন গাছ (সাধারণত এ অবস্থিত মধ্যে প্রক্রিয়া /lib/udev/rules.dএবং /etc/udev/rules.d)। সুতরাং বেশিরভাগ সময় যখন আপনি কোনও নিয়ম ফাইল পরিবর্তন করেন তখন আপনাকে কিছু করার প্রয়োজন হয় না।

আপনি কেবলমাত্র যদি কিছু অস্বাভাবিক কিছু করে থাকেন তবে আপনাকে স্পষ্টতই উদেব ডেমনকে অবহিত করতে হবে, উদাহরণস্বরূপ যদি আপনার যদি এমন কোনও নিয়ম থাকে যা অন্য ডিরেক্টরিতে ফাইল অন্তর্ভুক্ত করে। তারপরে আপনি ডেমনদের তাদের কনফিগারেশনটি পুনরায় লোড করতে জিজ্ঞাসা করার জন্য সাধারণ সম্মেলনটি ব্যবহার করতে পারেন: একটি সাইনআপ ( pkill -HUP udevd) প্রেরণ করুন । অথবা আপনি ব্যবহার করতে পারেন udevadmকমান্ড প্রয়োগ করুন: udevadm control --reload-rules

তবে সাবধান হোন যে উদেবের বিভিন্ন সংস্করণ historতিহাসিকভাবে নিয়মগুলি স্বয়ংক্রিয়ভাবে লোড করার জন্য trigতিহাসিকভাবে বিভিন্ন ট্রিগার রয়েছে। সুতরাং সন্দেহ হলে, কল করুন udevadm control --reload-rules: এটি যাইহোক কোনও ক্ষতি করবে না।

একটি ডিভাইস যুক্ত করা হয় কেবল তখনই udev নিয়ম প্রয়োগ করা হয়। আপনি যদি ইতিমধ্যে সংযুক্ত কোনও ডিভাইসে নিয়মগুলি প্রয়োগ করতে চান, তবে আপনার udevadm triggerকনফিগারেশন পরিবর্তিত হয়েছে এমন ডিভাইসগুলির সাথে মেলে সঠিক বিকল্পগুলির সাথে কল করে আপনাকে এগুলি স্পষ্টভাবে করতে হবে udevadm trigger --attr-match=vendor='Yoyodyne' --attr-match=model='Frobnicator 300'


1
সিস্টেমেড উদেব কি নিয়মের পরিবর্তনের জন্য দেখার জন্য ইনোটাইফাই ব্যবহার করে?
ক্রেগ ম্যাককুইন

inotifyপ্রক্রিয়া সবসময় একটি udev দ্বারা নিয়ম ফাইলের একটি পরিবর্তন ধরতে নেই। উদাহরণস্বরূপ, আমি যখন cat > 10-name.rulesসামগ্রীগুলি আটকানোর মাধ্যমে নিয়ম ফাইলটি পরিবর্তন করতে ব্যবহার করি তখন আমাকে নিজেই নিয়মগুলি পুনরায় লোড করতে হয় udevadm। রাস্পবিয়ান স্ট্রেচে পরীক্ষিত।
ড্যানিয়েল কে

@DanielK। এটি কি সম্প্রতি পরিবর্তিত হয়েছে? আমি এই উত্তরটি পোস্ট করার সময় আইআইআরসি আমি একটি সিস্টেমযুক্ত উদেব এবং একটি নন-সিস্টেমড উদেব উভয়ই পরীক্ষা করে দেখেছিলাম এবং উভয়ই অযৌক্তিকরূপে ব্যবহার করেছে, তাই --reload-rulesকেবল অস্বাভাবিক ক্ষেত্রেই এটি প্রয়োজন ছিল।
গিলস

@ গিলস: সম্ভবত আমার উদাহরণটি (শেল পুনর্নির্দেশটি ব্যবহার করে একটি বিদ্যমান নিয়ম ফাইল ওভাররাইট করা) একটি "অস্বাভাবিক কেস" হিসাবে বিবেচিত হতে পারে। আমি যখন এডিটরের মাধ্যমে এই ফাইলটি সংশোধন করেছি, যেমন, vi, তখন inotifyপ্রক্রিয়াটি কাজ করেছিল।
ড্যানিয়েল কে

@DanielK। আহ, এটা জেনে রাখা ভাল। এটি কোনও অস্বাভাবিক ঘটনা নয়: কিছু সম্পাদক পুনরায় লেখার মাধ্যমে ফাইলটি সংরক্ষণ করতে পারেন (ভিম এবং ইম্যাকের সাহায্যে এটি কীভাবে কনফিগার করা হয়েছে তা নির্ভর করে)। অদ্ভুত যে উদেব কেবল একটির ক্ষেত্রে কেস পরিচালনা করে - এটি আমার কাছে একটি বাগের মতো মনে হয়, কারণ আমি তাদের সাথে অন্যরকম আচরণ করার কোনও কারণ ভাবতে পারি না।
গিলস

19

আমি এটি যুক্ত করছি কারণ কোনও দিন আমার আবার এটির প্রয়োজন হবে ... আবার।

কখনও কখনও আপনি ইথারনেট ডিভাইস নম্বর এবং ম্যাক ঠিকানাগুলির একটি ভুল মিল পান। কখনও কখনও এটি সত্যিই গুরুত্বপূর্ণ, যেমন কোনও ভিএম চালিত হওয়ার সময় এবং প্রতিটি ডিভাইস একটি আলাদা ভিএলএএন-তে নির্ধারিত হয়।

  1. নেটওয়ার্ক ইন্টারফেসগুলি নীচে আনুন, তবে
  2. পরিবর্তন করুন /etc/udev/rules.d/70-persistent-net.rules(বা এর সমতুল্য)
  3. পুনরায় লোড দিয়ে udevadm control --reload-rules
  4. সঙ্গে আবার ট্রিগার udevadm trigger --attr-match=subsystem=net
  5. নেটওয়ার্ক ইন্টারফেস আনতে।

আমি অবাক হয়েছি যে এটি কতটা ভাল কাজ করেছে।


6
রেড হাটে:service network stop && udevadm control --reload-rules; udevadm trigger --attr-match=subsystem=net; service network start
আলেকজান্ডার টর্স্টলিং

1
দেবিয়ান পরীক্ষায় 'udevadm ট্রিগার --attr-ম্যাচ = সাবসিস্টেম = নেট' কাজ করে না। আমাকে ইউএসবি ইথারনেট কার্ড আনপ্লাগ এবং প্লাগ করতে হয়েছিল কেবল তখনই ইউদেব নতুন নিয়ম ট্রিগার করেছিল।
ত্রিশমেগিস্টোস

ক্রেটন ডিউকের উত্তর অনুসারে, ট্রাইসমেজিস্টস, আমি বাজি রাখতে ইচ্ছুক যে আনপ্লাগ / প্লাগটি নেটওয়ার্ক ড্রাইভারটি অপসারণ এবং পুনরায় লোড করার মতো।
মাইক এস

12

এটি প্রযোজ্য কিনা তা সম্পর্কে আমি নিশ্চিত নই এবং এটি অবশ্যই একটি পুরানো পোস্ট তবে এটি উদেব তথ্যের জন্য আমার ওয়েব অনুসন্ধানে উঠে এসেছে তাই আমি ভেবেছিলাম যে আমি কিছু জ্ঞান ভাগ করে নিতে পারি।

আপনি নির্দিষ্ট ডিভাইসগুলির জন্য ম্যানুয়ালি udev বিধিগুলি ট্রিগার করতে পারেন। এটি কেবল রেডহ্যাট-সম্পর্কিত ডিস্ট্রোসের ক্ষেত্রে প্রযোজ্য (সেন্টো ফেডোরা ইত্যাদি ইত্যাদি)

একবার আপনি আপনার নিয়ম ফাইলে ( /etc/udev/rules.d/whateveryoucalledyourrules) প্রাসঙ্গিক পরিবর্তনগুলি changeসম্পাদন করলে আপনি ডিভাইসের আগমনীতে প্রতিধ্বনিত করতে পারেন ।

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

এটি কেবলমাত্র এই ডিভাইসটির জন্য কোনও উদেব নিয়ম পড়তে বাধ্য করবে। অনেক ভাল, এবং আমার মতে আরও লক্ষ্যবস্তু।


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

আমি এখানে সঠিক উত্তর যুক্ত করছি কারণ @ এনথুসিস্টিকজিকের মন্তব্যে এটি লক্ষ্য করতে আমার কিছুটা সময় লেগেছে। আপনাকে যা করতে হবে তা (ধরে নিই যে আপনি সার্ভারের কনসোলে রয়েছেন - স্পষ্টতই যদি আপনি সাইন ইন করেন তবে এটি করা খারাপ!):

  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 থেকে প্রাপ্ত আপনার কার্ড ড্রাইভারের সাথে প্রতিস্থাপন করুন ।

এরপরে, /etc/udev/rules.d/70-persistent-net.rulesপ্রয়োজন অনুসারে সম্পাদনা করুন , তারপরে আবার নিজের সাথে modprobe igbপ্রতিস্থাপন করে মডিউলটি আবার লোড করুন igb


এটি, ওথিয়াসের উত্তরের সাথে মিলিত, সেই গোপন সসটিই আমাকে মেশিন রিবুট ছাড়াই আমার মেলানক্স নেটওয়ার্ক কার্ড কনফিগারেশন ঠিক করতে সক্ষম করে। আমি বিশ্বাস করি যে অবিরাম-নেট.রুলস ফাইলটি পড়ার সাথে চালকের লোডিং এবং উদেবদম পড়ার সময় সিস্টেমটি বুট করার সময় এটি কী করে তা প্রায় অনুরূপ।
মাইক এস

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.