সিস্টেমড: নেটওয়ার্ক সম্পূর্ণরূপে সংযুক্ত হওয়ার পরে কীভাবে একটি সিস্টেমড পরিষেবা চালু করা যায়?


12

পটভূমি

আমি রাস্পবেইনে রাস্পবেরি পাই 2 তে চলার জন্য একটি সাধারণ স্ক্রিপ্ট লিখছি, সরল একটি LED চালু করে নির্দেশ করুন যে আমি আমার ডেস্কটপ কম্পিউটার থেকে এসএসএইচের সাথে সংযোগ করতে প্রস্তুত আছি।

স্ক্রিপ্টটি এখানে গুরুত্বপূর্ণ নয়, কেবল উল্লেখ করার জন্য যে আমি ফ্রিকোয়েন্স নিয়ন্ত্রণ ব্যবহার করি তাই স্ক্রিপ্টটি অনন্ত লুপ চালাচ্ছে, প্রায়শই LED চালু এবং বন্ধ করে দেয়। সুতরাং এটি সাধারণ পরিষেবার একটি উদাহরণ। যাইহোক, এই প্রশ্নের অন্ততপক্ষে গ্রহণযোগ্য উত্তর আমাকে প্রকারটি নিষ্ক্রিয় করতে সেট করতে পরামর্শ দেয়। সুতরাং আমার পরিষেবা ফাইলটি দেখতে মনে হচ্ছে

[Unit]
Description=Turn on LED after SSH is ready

[Service]
Type=idle
ExecStart=/usr/bin/sshready.py

[Install]
Wants=network-online.target
After=network-online.target

প্রভাব

পরিষেবাটি প্রত্যাশার মতো চলে। যাইহোক, আমি লক্ষ্য করেছি যে লগইন প্রম্পটটি অনিবার্যভাবে প্রদর্শিত না হওয়ার পরে যখন আমি ডেস্কটপ কম্পিউটারে পুটি শুরু করি। তাই আমি চেক করেছি

$ systemd-analyze plot > output.svg

ফলাফল দেখায়

এখানে চিত্র বর্ণনা লিখুন

প্রশ্ন

দেখে মনে হচ্ছে আমার পরিষেবাগুলি শুরু হয় না network-online.target, এখানে কী ভুল এবং আমি কীভাবে এটি ঠিক করতে পারি?

উত্তর:


12

যখন সিস্টেমযুক্ত নির্দেশনা সম্পর্কে কোনও প্রশ্ন থাকে, আপনি man systemd.directivesএটি কোথায় নথিভুক্ত করেছেন তা সন্ধান করতে পারেন । এই ক্ষেত্রে এটি After=ডকুমেন্টেড রয়েছে তা দেখায় man systemd.unit

এই ফাইলটিতে এটি After=নির্দেশ দেয় যে "[ইউএনআইটি] [Unit]বিভাগের বিকল্পসমূহ" এ তালিকাভুক্ত করা হয়েছে, এটি নির্দেশ করে যে এটি ফাইলের অংশে অন্তর্ভুক্ত।

একই ডকুমেন্টেশন এছাড়াও [ইনস্টল] বিভাগ বিকল্পগুলি নথি করে, এবং After=সেখানে তালিকাভুক্ত নয়।

সংক্ষেপে, আপনার After=নির্দেশিকাটি ইউনিট ফাইলের ভুল জায়গায় ছিল তাই আপনি সঠিক স্থানে না নিয়ে যাওয়া পর্যন্ত এর কোনও প্রভাব পড়ে না।


পরিষ্কার হয়ে উঠতে, এই ক্ষেত্রে "[ইউনিট]" হ'ল "[পরিষেবা]", কারণ এটি একটি পরিষেবার ফাইল।
ফাহো

সংশোধনগুলির সাথে একটি অনুলিপি পেস্টযোগ্য উত্তর আরও ভাল হত!
জেরার্ডজেপি

@ জেরার্ডজেপি একজন মানুষকে মাছের জন্য একটি দিন খাওয়ানো শেখানো আরও ভাল। লোকেরা একবার সিস্টেমেড ডকুমেন্টেশন কীভাবে ব্যবহার করতে হয় তা জানার পরে, তারা স্ট্যাকএক্সচেঞ্জে তৃতীয় পক্ষের ডক্সের দিকে তাকিয়ে সময় ব্যয় না করে অনুমোদনমূলক উত্তরগুলি খুঁজে পেতে পারে।
মার্ক স্টোসবার্গ

11

হিসাবে পরিষেবা পরিবর্তন করে এটি স্থির করুন

[Unit]
Description=Turn on LED after SSH is ready
After=network-online.target

[Service]
Type=idle
ExecStart=/usr/bin/sshready.py

[Install]
WantedBy=network-online.target

আমি কী করছিলাম তা এখনও পুরোপুরি বুঝতে পারেনি তবে এটি এখন কাজ করে। কেউ দয়া করে ব্যাখ্যা করতে পারেন?

হালনাগাদ

এই উত্তরটি স্বীকৃত উত্তর আসার আগে আমার দ্বারা তৈরি হয়েছিল।


যে After=নির্দেশ থাকতে হবে [Unit]অধ্যায়। এটা ঠিক যে.
বিগন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.