একটি সিস্টেমড সার্ভিস ইউনিট ফাইল কীভাবে লিখবেন যাতে এটি শুরু করার আগে একটি নির্দিষ্ট ইন্টারফেস না হওয়া পর্যন্ত অপেক্ষা করে?


14

আমি দেবিয়ানে হোস্ট্যাপের জন্য একটি ইউনিট ফাইল লেখার চেষ্টা করছি।

হোস্টাপডি ডিমন মনে হয় সম্পর্কিত ওয়াইফাই ইন্টারফেসটি চালুর আগেই এটির ইন্টারফেসের প্রয়োজন হয় অন্যথায় এটি এসইজিভি'র।

আমি নেটওয়ার্ক-অনলাইন.আরগেট চেষ্টা করেছি, তবে এখনও এসইজিভি পেয়েছি। আমি মনে করি এটি হ'ল কারণ নেটওয়ার্ক -অনলাইন.অরগেটটি কেবল কোনও ইন্টারফেস দেখতে পারা দরকার, এবং হোস্টিপিডি কাজ করার জন্য ওয়াইফাই ইন্টারফেসটি যথেষ্ট প্রস্তুত হওয়ার আগেই অন্যান্য ইন্টারফেসগুলি উপস্থিত হয়।

কোনও পরিষেবা শুরু করার আগে কোনও নির্দিষ্ট ইন্টারফেসের জন্য অপেক্ষা করার সর্বোত্তম উপায় কী?

উত্তর:


15

সিস্টেমড 219, আপনি অপেক্ষা করার জন্য ইন্টারফেসটি নির্দিষ্ট করার জন্য প্যারামিটার systemd-networkd-wait-onlineদিয়ে সরাসরি সিস্টেমডের সরঞ্জামটি ব্যবহার করতে পারেন --interface। উদাহরণ স্বরূপ:

ExecStartPre=/usr/lib/systemd/systemd-networkd-wait-online --interface=$IFACE

তবে, একটি সতর্কতা আছে। systemd-networkdআপনার কনফিগারেশনে এটি কিছু না করলেও এই সরঞ্জামটি চলমান হওয়া দরকার। অন্যদিকে, একই সিস্টেমেড 219 দিয়ে শুরু systemd-networkdকরা সকেট-অ্যাক্টিভিয়েটেবল এবং স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় অবস্থায় প্রস্থান করে। সুতরাং আপনার যা প্রয়োজন তা হ'ল তার সকেটটি টানুন।

এগুলি একসাথে রাখলে, ইউনিট ফাইলে পরিবর্তনগুলি এর মতো দেখাবে ( $IFACEআপনার পছন্দসই ইন্টারফেসের পরিবর্তে):

[Unit]
Requires=systemd-networkd.socket
After=systemd-networkd.socket
...

[Service]
ExecStartPre=/usr/lib/systemd/systemd-networkd-wait-online --interface=$IFACE
ExecStart=/usr/bin/hostapd ...
...

1
হ্যাঁ, এটাই আমি চাই। দুর্ভাগ্যক্রমে আমি সিস্টেমেড 44 এর সাথে ডেবিয়ান 4.6.3 এ আটকে আছি, সুতরাং এটি ব্যবহার করতে পারবেন না। এটিকে এই প্ল্যাটফর্মটিতে কীভাবে কাজ করা যায় তার কোনও ধারণা? ধন্যবাদ!
bigjosh

2
@ বিগজোশ, আপনি সর্বদা perl -e 'sleep 1 until -e "/sys/class/net/myinterface"'আপনার এক্সিকিস্টার্টপ্রায়
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.