সিস্টেমযুক্ত নেটওয়ার্ক কনফিগারেশন নির্ভরতা
সিস্টেমডের ইউনিট অর্ডারকে প্রভাবিত করা খুব সহজ। অন্যদিকে আপনার সম্পূর্ণ ইউনিট কী গ্যারান্টি দেয় সে সম্পর্কে আপনাকে যত্নবান হওয়া দরকার।
আপনার পরিষেবা কনফিগার করুন
বর্তমান সিস্টেমগুলিতে, network.target
কেবলমাত্র গ্যারান্টির পরে অর্ডার দেওয়ার মাধ্যমে নেটওয়ার্ক পরিষেবা শুরু হয়েছে তা নয়, এমন কিছু আসল কনফিগারেশন নেই। network-online.target
এটি অর্জনের জন্য আপনাকে পরে অর্ডার করতে হবে এবং এটিকে টানতে হবে।
[Unit]
Wants=network-online.target
After=network-online.target
পুরানো সিস্টেমের সাথে সামঞ্জস্যের জন্য আপনার নেটওয়ার্ক.তারের পরেও অর্ডার করতে হতে পারে।
[Unit]
Wants=network-online.target
After=network.target network-online.target
এটি আপনার পরিষেবার ইউনিট ফাইলের জন্য এবং সিস্টেমডের জন্য।
সফ্টওয়্যার বর্তমান সংস্করণে প্রয়োগ
এখন আপনাকে নিশ্চিত করা দরকার যে network-online.target
প্রত্যাশার মতো কাজ করে (বা আপনি কমপক্ষে এটি ব্যবহার করতে পারেন network.target
)।
এর বর্তমান সংস্করণ NetworkManager দ্বারা উপলব্ধ করা হয় NetworkManager-wait-online.service
দ্বারা যা টানা পরার network-online.target
আপনার সেবা দ্বারা এবং এইভাবে। এই বিশেষ পরিষেবাটি নিশ্চিত করে যে আপনার পরিষেবাটি কনফিগার করা সমস্ত সংযোগ স্বয়ংক্রিয়ভাবে সফল হওয়া, ব্যর্থ হওয়া বা সময় শেষ হওয়ার আগ পর্যন্ত অপেক্ষা করবে।
অনুরোধ অনুযায়ী সমস্ত ডিভাইস কনফিগার করা না হওয়া অবধি সিস্টেমড-নেটওয়ার্কযুক্ত বর্তমান সংস্করণ আপনার পরিষেবাটিকে অবরুদ্ধ করে । এটি সহজ যে এটি বর্তমানে বুট সময়ে প্রয়োগ করা কনফিগারেশনগুলিকে সমর্থন করে (বিশেষত `systemd- নেটওয়ার্কd.service এর প্রারম্ভকালীন সময়)।
সম্পূর্ণতার স্বার্থে, /etc/init.d/network
ফেডোরার পরিষেবাটি সিস্টেমেড, ব্লক network.target
এবং এইভাবে অপ্রত্যক্ষভাবে ব্লক network-online.target
এবং আপনার পরিষেবাদির বর্তমান সংস্করণ দ্বারা ব্যাখ্যা করা হয়েছে । এটি স্ক্রিপ্ট ভিত্তিক প্রয়োগের একটি উদাহরণ।
আপনার বাস্তবায়ন, যদি ডেমন ভিত্তিক বা স্ক্রিপ্ট ভিত্তিক, উপরের নেটওয়ার্ক পরিচালনা পরিষেবাদিগুলির একটি হিসাবে আচরণ করে তবে নেটওয়ার্ক কনফিগারেশনটি সফলভাবে শেষ না হওয়া, ভাল কারণে ব্যর্থ হওয়া বা যুক্তিসঙ্গত সময়ের পরে সময় নির্ধারণ না করা অবধি আপনার পরিষেবাটি শুরু করতে বিলম্ব করবে ফ্রেম সম্পূর্ণ।
নেটেক্টল একইভাবে কাজ করে কিনা তা আপনি পরীক্ষা করতে চাইতে পারেন এবং সেই তথ্য এই উত্তরের একটি মূল্যবান সংযোজন হবে।
সফ্টওয়্যার এর পুরানো সংস্করণে প্রয়োগ
আমি মনে করি না আপনি সিস্টেমডির যথেষ্ট পুরানো সংস্করণ দেখতে পাবেন যেখানে এটি ভালভাবে কাজ করবে না। তবে আপনি এটি পরীক্ষা করতে পারেন যে কমপক্ষে network-online.target
রয়েছে এবং এটি পরে অর্ডার পেয়েছে network.target
।
পূর্বে নেটওয়ার্কম্যানেজার কেবল গ্যারান্টি দিয়েছিল যে কমপক্ষে একটি সংযোগ প্রয়োগ করা হবে। এমনকি এটির জন্যও আপনাকে NetworkManager-wait-online.service
স্পষ্টভাবে সক্ষম করতে হবে । এটি ফেডোরায় দীর্ঘকাল স্থির করা হয়েছে তবে সম্প্রতি সম্প্রতি প্রবাহে প্রয়োগ করা হয়েছিল।
systemctl enable NetworkManager-wait-online.service
নেটওয়ার্ক.আরগারেট এবং নেটওয়ার্ক-অনলাইন
আপনার সফ্টওয়্যারটি কখনও NetworkManager.service
বা NetworkManager-wait-online.service
অন্য কোনও নির্দিষ্ট পরিষেবার উপর নির্ভরশীল করার প্রয়োজন হবে না । পরিবর্তে, সমস্ত নেটওয়ার্ক পরিচালন পরিষেবাদির আগে network.target
এবং optionচ্ছিকভাবে নিজেরাই অর্ডার করা উচিত network-online.target
।
একটি সাধারণ স্ক্রিপ্ট ভিত্তিক নেটওয়ার্ক ম্যানেজমেন্ট পরিষেবাটি প্রস্থান করার আগে নেটওয়ার্ক কনফিগারেশন শেষ করা উচিত network.target
এবং এর আগে এবং এভাবে অপ্রত্যক্ষভাবে আগে অর্ডার করা উচিত network-online.target
।
[Unit]
Before=network.target
[Service]
Type=oneshot
ExecStart=...
RemainAfterExit=yes
ডেমন ভিত্তিক নেটওয়ার্ক ম্যানেজমেন্ট পরিষেবাটি network.target
খুব কার্যকর না হলেও তার আগে নিজেই অর্ডার করা উচিত ।
[Unit]
Before=network.target
[Service]
Type=simple
ExecStart=...
একটি পরিষেবা যা ডেমনটি শেষ করতে অপেক্ষা করে তার নির্দিষ্ট পরিষেবার পরে এবং তার আগে নিজের অর্ডার করা উচিত network-online.target
। এটি Requisite
ডেমন পরিষেবাতে ব্যবহার করা উচিত যাতে এটি যদি তত্ক্ষণাত্ ব্যর্থ হয় তবে যদি সম্পর্কিত নেটওয়ার্ক পরিচালন পরিষেবা ব্যবহার না করা হয়।
[Unit]
Requisite=...
After=...
Before=network-online.target
[Service]
Type=oneshot
ExecStart=...
RemainAfterExit=yes
প্যাকেজটির wants
জন্য ডিরেক্টরিতে ওয়েটিং সার্ভিসে একটি সিমিলিংক ইনস্টল করা উচিত network-online.target
যাতে এটি কনফিগার করা নেটওয়ার্কের জন্য অপেক্ষা করতে চায় এমন পরিষেবাগুলির দ্বারা টানতে পারে।
ln -s /usr/lib/systemd/system/... /usr/lib/systemd/system/network-online.target.wants/
সম্পর্কিত ডকুমেন্টেশন
চূড়ান্ত নোট
আমি আশা করি যে আপনি কেবল আপনার প্রশ্নের উত্তর দেওয়ার সময়ই আমি সহায়তা করেছিলাম না, পাশাপাশি প্রবাহ এবং লিনাক্স বিতরণে পরিস্থিতি উন্নত করতেও ভূমিকা রেখেছি, যাতে মূল লেখার সময় আমি যতটা সম্ভব উত্তর দিতে পারি ।