সিস্টেম ইউনিট ফাইলগুলি রাখার সর্বোত্তম জায়গা : /etc/systemd/system
[ইনস্টল] বিভাগের অধীনে একটি লক্ষ্য যুক্ত করার বিষয়ে নিশ্চিত হন, "এটি কীভাবে জানবে?" পড়ুন বিস্তারিত জানার জন্য. আপডেট : /usr/local/lib/systemd/system
আরেকটি বিকল্প, বিশদগুলির জন্য "গ্রে এরিয়া" পড়ুন।
ব্যবহারকারীর ইউনিট ফাইলগুলি রাখার সর্বোত্তম জায়গা : /etc/systemd/user
বা $HOME/.config/systemd/user
এটি অনুমতি এবং পরিস্থিতির উপর নির্ভর করে।
সত্যটি হ'ল সিস্টেমড ইউনিটগুলি (বা অন্তর্ভুক্ত বাক্যটি তাদের হিসাবে "ইউনিট কনফিগারেশন" বলে) যে কোনও জায়গায় যেতে পারে - আপনি ম্যানুয়াল সিমলিংক তৈরি করতে ইচ্ছুক হন এবং আপনি সতর্কতা অবগত হন। এটি ইউনিট স্থাপন করা জীবনকে আরও সহজ করে তোলে যেখানে systemctl daemon-reload
কিছু ভাল কারণে এটি খুঁজে পেতে পারে:
- একটি স্ট্যান্ডার্ড অবস্থান ব্যবহার করার অর্থ হ'ল সিস্টেমযুক্ত জেনারেটরগুলি সেগুলি খুঁজে পাবে এবং বুট করার সাথে এগুলি সক্ষম করা সহজ করে দেবে
systemctl enable
। এর কারণ আপনার ইউনিট স্বয়ংক্রিয়ভাবে একটি ইউনিট নির্ভরতা গাছের (একক ইউনিটের ক্যাশে) যুক্ত হবে।
- অনুমতি সম্পর্কে আপনার ভাবার দরকার নেই, কারণ কেবলমাত্র অধিকারপ্রাপ্ত ব্যবহারকারীগণ নির্ধারিত অঞ্চলে লিখতে পারেন।
এটা কিভাবে জানবে?
এবং ঠিক কীভাবে systemctl enable
জানতে পারে কোথায় সিমলিংক তৈরি করবেন? আপনি [install]
বিভাগটির অধীনে নিজেই এটিকে হার্ড কোড করুন । সাধারণত এখানে একটি লাইন থাকে
[Install]
WantedBy = multi-user.target
যা ফাইল সিস্টেমের একটি পূর্বনির্ধারিত জায়গার সাথে মিলে যায়। এইভাবে, systemctl
জেনে রাখুন যে এই ইউনিটটি ইউনিট ফাইলগুলির একটি গ্রুপের উপর নির্ভরশীল multi-user.target
("টার্গেট" ইউনিট নির্ভরতা গ্রুপগুলি মনোনীত করার জন্য ব্যবহৃত শব্দটি You আপনি সমস্ত গ্রুপকে তালিকাভুক্ত করতে পারেন systemctl list-units --type target
)। একটি লক্ষ্য সহ লোড করা ইউনিট ফাইলগুলির গ্রুপকে একটি targetname.target.wants
ডিরেক্টরিতে স্থাপন করা হয়। এটি সিমলিংক (বা আসল জিনিস) পূর্ণ একটি ডিরেক্টরি। আপনার যদি [Install]
অধ্যায় বলছেন এটা , কিন্তু যদি এটি একটি সিমবলিক লিঙ্ক বিদ্যমান নেই ডিরেক্টরি, তাহলে এটি লোড করবে না। যখন সিস্টেমড ইউনিট জেনারেটরগুলি বুট-এ নির্ভরতা গাছের ক্যাশে আপনার ইউনিট ফাইল যুক্ত করে (আপনি নিজে জেনারেটরগুলি দিয়ে জেনারেটরগুলি ট্রিগার করতে পারেন ) তখন স্বয়ংক্রিয়ভাবে জেনে যায় ডিরেক্টরিতে সিমলিংকটি কোথায় রাখা উচিত putWantedBy
multi-user.target
multi-user.target.wants
systemctl daemon-reload
/etc/systemd/system/multi-user.target.wants/
আপনি এটি সক্ষম করা উচিত
ম্যানুয়ালে মূল পয়েন্টগুলি:
অতিরিক্ত ইউনিটগুলি ইউনিট লোডের পথে নয় ডিরেক্টরিগুলি থেকে systemd ("সংযুক্ত") এ লোড হতে পারে। Systemctl (1) এর জন্য লিঙ্ক কমান্ডটি দেখুন।
Systemctl এর অধীনে, ইউনিট ফাইল কমান্ডগুলি সন্ধান করুন
ইউনিট ফাইল লোডের পথ
নীচের দুটি সারণীতে বর্ণিত সংকলনের সময় নির্ধারিত পাথের সেট থেকে ইউনিট ফাইলগুলি লোড করা হয়। আগের তালিকাভুক্ত ডিরেক্টরিগুলিতে পাওয়া ইউনিট ফাইলগুলি তালিকাতে নীচের ডিরেক্টরিতে একই নামের ফাইলগুলি ওভাররাইড করে।
যখন ভেরিয়েবল $SYSTEMD_UNIT_PATH
সেট করা থাকে, তখন এই ভেরিয়েবলের সামগ্রীগুলি ইউনিট লোড পাথকে ওভাররাইড করে। যদি $SYSTEMD_UNIT_PATH
একটি খালি উপাদান (":") দিয়ে শেষ হয়, সাধারণ ইউনিট লোড পাথটি ভেরিয়েবলের বিষয়বস্তুতে সংযুক্ত করা হবে।
সারণী 1 এবং সারণী 2 থেকে man systemd.unit
ভাল।
সিস্টেম মোডে চলমান অবস্থায় পাথগুলি লোড করুন ( --system
)।
/etc/systemd/system
স্থানীয় কনফিগারেশন
/run/systemd/system
রানটাইম ইউনিট
/usr/lib/systemd/system
ইনস্টল করা প্যাকেজগুলির ইউনিট
ব্যবহারকারী মোডে চলার সময় পাথ লোড করুন ( --user
)
প্রতি ব্যবহারকারী ইউনিট এবং সমস্ত / বিশ্বব্যাপী ব্যবহারকারী এককের মধ্যে পার্থক্য রয়েছে ।
ব্যবহারকারী-নির্ভরশীল
$XDG_CONFIG_HOME/systemd/user
ব্যবহারকারীর কনফিগারেশন (কেবল তখন $XDG_CONFIG_HOME
সেট করা থাকে)
$HOME/.config/systemd/user
ব্যবহারকারীর কনফিগারেশন (শুধুমাত্র $XDG_CONFIG_HOME
সেট না থাকলে ব্যবহৃত হয়)
$XDG_RUNTIME_DIR/systemd/user
রানটাইম ইউনিট (শুধুমাত্র $XDG_RUNTIME_DIR
সেট করা থাকলে ব্যবহৃত হয়)
$XDG_DATA_HOME/systemd/user
হোম ডিরেক্টরিতে প্যাকেজগুলির ইউনিটগুলি ইনস্টল করা হয়েছে (কেবল যখন $XDG_DATA_HOME
সেট করা হয় তখন ব্যবহৃত হয়)
$HOME/.local/share/systemd/user
হোম ডিরেক্টরিতে প্যাকেজগুলির ইউনিটগুলি ইনস্টল করা হয়েছে (কেবল $XDG_DATA_HOME
সেট না থাকলেই ব্যবহৃত হবে )
--global
(সকল ব্যবহারকারী)
ইউনিটগুলি যা সমস্ত ব্যবহারকারীর জন্য প্রযোজ্য - যার অর্থ প্রতিটি ব্যবহারকারীর মালিকানাও রয়েছে। সুতরাং প্রশাসক বুট-এ সক্ষম করলেও প্রতিটি ব্যবহারকারী এই পরিষেবাগুলি বন্ধ করতে পারেন।
/etc/systemd/user
সমস্ত ব্যবহারকারীর জন্য স্থানীয় কনফিগারেশন ( systemctl --global enable userunit.service
)
/usr/lib/systemd/user
সমস্ত ব্যবহারকারীর জন্য সিস্টেম-ওয়াইড ইনস্টল করা প্যাকেজগুলির ইউনিটগুলি
/run/systemd/user
রানটাইম ইউনিট
ধূসর এলাকা
একদিকে, ফাইল হায়ারার্কি স্ট্যান্ডার্ড নির্দিষ্ট করে যেগুলি /etc
স্থানীয় কনফিগারেশনের জন্য যা বাইনারিগুলি কার্যকর করে না। অন্যদিকে এটি নির্দিষ্ট করে যে /usr/local/
"স্থানীয়ভাবে সফ্টওয়্যার ইনস্টল করার সময় সিস্টেম প্রশাসক ব্যবহারের জন্য"। আপনি যুক্তিও দিতে পারেন (কেবল সংস্থার উদ্দেশ্যে নয়) সমস্ত সিস্টেম ইউনিট ফাইলগুলির আওতাভুক্ত হওয়া উচিত /usr/local/lib/systemd/system
তবে এটি ইউনিট ফাইলগুলির জন্য যা "সফ্টওয়্যার" এর অংশ যা প্যাকেজ ম্যানেজারের নয় not সংশ্লিষ্ট সিস্টেমড ব্যবহারকারী ইউনিটগুলি যেগুলি সিস্টেম-প্রশস্ত রয়েছে এর অধীনে যেতে পারে
/usr/local/lib/systemd/user
।
/etc/systemd/system
আপনি যেখানে আপনার স্ক্রিপ্টগুলি রেখেছেন, প্যাকম্যান প্যাকেজ স্ক্রিপ্টগুলি রাখে/usr/lib/systemd/system
এবং জারিsystemctl enable foo.service
করে/usr
/etc