systemd
ইউনিটগুলিতে ফাইল মেনে চলার দরকার নেই /etc/default
। systemd
সহজেই কনফিগারযোগ্য, তবে আপনার সিস্টেমড ইউনিট ফাইলগুলির সিনট্যাক্সটি জানতে হবে know
প্যাকেজগুলি জাহাজের ইউনিট ফাইলগুলি সাধারণত থাকে /lib/systemd/system/
। এগুলি সম্পাদনা করার মতো নয় । পরিবর্তে, systemd
আপনাকে উপযুক্ত ফাইল তৈরি করে এই ফাইলগুলিকে ওভাররাইড করতে দেয় /etc/systemd/system/
।
প্রদত্ত পরিষেবার জন্য foo
, প্যাকেজটি সরবরাহ করবে /lib/systemd/system/foo.service
। আপনি এর স্থিতিটি ব্যবহার করে পরীক্ষা করতে পারেন systemctl status foo
, বা এর লগগুলি ব্যবহার করে দেখতে পারেন journalctl -u foo
। সংজ্ঞাটিতে কিছু ওভাররাইড করতে foo
, করুন:
sudo systemctl edit foo
এটি /etc/systemd/system
ইউনিটের নাম অনুসারে একটি ডিরেক্টরি override.conf
এবং সেই ডিরেক্টরিতে ( /etc/systemd/system/foo.service.d/override.conf
) ডিরেক্টরি তৈরি করে । আপনি এই ফাইলটি (বা অন্যান্য .conf
ফাইলগুলিতে /etc/systemd/system/foo.service.d/
) ব্যবহার করে সেটিংস যুক্ত বা ওভাররাইড করতে পারেন ।
ওভাররাইডিং কমান্ড আর্গুমেন্ট
getty
উদাহরণস্বরূপ পরিষেবাটি নিন । বলুন যে আমি আমার ব্যবহারকারীর কাছে টিটিওয়াই 2 অটলজিন রাখতে চাই (এটি পরামর্শযুক্ত নয়, তবে এটি কেবল উদাহরণ)। টিটিওয়াই 2 getty@tty2
পরিষেবা দ্বারা চালিত হয় ( tty2
টেমপ্লেটের উদাহরণ হিসাবে /lib/systemd/system/getty@service
)। এটি করতে, আমাকে getty@tty2
পরিষেবাটি পরিবর্তন করতে হবে ।
$ systemctl cat getty@tty2
# /lib/systemd/system/getty@.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Getty on %I
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
After=systemd-user-sessions.service plymouth-quit-wait.service
After=rc-local.service
# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes
# On systems without virtual consoles, don't start any getty. Note
# that serial gettys are covered by serial-getty@.service, not this
# unit.
ConditionPathExists=/dev/tty0
[Service]
# the VT is cleared by TTYVTDisallocate
ExecStart=-/sbin/agetty --noclear %I $TERM
Type=idle
Restart=always
RestartSec=0
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes
# Unset locale for the console getty since the console has problems
# displaying some internationalized messages.
Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=
[Install]
WantedBy=getty.target
DefaultInstance=tty1
বিশেষত, আমাকে ExecStart
লাইনটি পরিবর্তন করতে হবে , যা বর্তমানে:
$ systemctl cat getty@tty2 | grep Exec
ExecStart=-/sbin/agetty --noclear %I $TERM
এটিকে ওভাররাইড করতে, এটি করুন:
sudo systemctl edit getty@tty2
এবং যোগ করুন:
[Service]
ExecStart=
ExecStart=-/sbin/agetty -a muru --noclear %I $TERM
মনে রাখবেন যে:
- আমি স্পষ্টভাবে স্পষ্ট ছিল
ExecStart
এটা আবার সেটিং, যেহেতু এতে একটি যুত সেটিং অনুরূপ সামনে After
, Environment
(সামগ্রিকভাবে, না প্রতি-পরিবর্তনশীল) এবং EnvironmentFile
এবং অন্য কোনো সেটিংস যাই হোক বিরোধিতা RestartSec
বা Type
। ExecStart
শুধুমাত্র Type=oneshot
পরিষেবার জন্য একাধিক এন্ট্রি থাকতে পারে ।
- আমাকে সঠিক বিভাগের শিরোনামটি ব্যবহার করতে হয়েছিল। মূল ফাইল সালে
ExecStart
হয় [Service]
, তাই আমার ওভাররাইড করা হয়েছে অধ্যায় ExecStart
মধ্যে [Service]
অধ্যায় হিসাবে ভাল। প্রায়শই, ব্যবহার করে প্রকৃত পরিষেবা ফাইলটি একবার আপনাকে দেখায় systemctl cat
যে আপনাকে কী ওভাররাইড করতে হবে এবং কোন বিভাগে এটি রয়েছে।
সাধারণত, আপনি যদি সিস্টেমড ইউনিট ফাইল সম্পাদনা করেন, এটি কার্যকর হওয়ার জন্য, আপনাকে চালনা করতে হবে:
sudo systemctl daemon-reload
তবে systemctl edit
স্বয়ংক্রিয়ভাবে এটি আপনার জন্য করে।
এখন:
$ systemctl cat getty@tty2 | grep Exec
ExecStart=-/sbin/agetty --noclear %I $TERM
ExecStart=
ExecStart=-/sbin/agetty -a muru --noclear %I $TERM
$ systemctl show getty@tty2 | grep ExecS
ExecStart={ path=/sbin/agetty ; argv[]=/sbin/agetty -a muru --noclear %I $TERM ; ... }
এবং যদি আমি করি:
sudo systemctl restart getty@tty2
এবং প্রেস CtrlAltF2, প্রেস্টো! আমি সেই টিটিওয়াইতে আমার অ্যাকাউন্টে লগ ইন করব।
যেমনটি আমি আগেই বলেছি, getty@tty2
এটি কোনও টেমপ্লেটের উদাহরণ। সুতরাং, যদি আমি template টেমপ্লেটের সমস্ত দাবিকে ওভাররাইড করতে চাই? এটি টেমপ্লেট সম্পাদনা করে নিজেই করা যেতে পারে (উদাহরণস্বরূপ সনাক্তকারীকে মুছে ফেলুন - এই ক্ষেত্রে tty2
):
systemctl edit getty@
পরিবেশ ওভাররাইডিং
/etc/default
ফাইলগুলির একটি সাধারণ ব্যবহারের ক্ষেত্রে পরিবেশের ভেরিয়েবলগুলি সেট করা হয়। সাধারণত, /etc/default
এটি একটি শেল স্ক্রিপ্ট, তাই আপনি এটিতে শেল ভাষার গঠন ব্যবহার করতে পারেন। সঙ্গে systemd
অবশ্য এই ক্ষেত্রে দেখা যায়। আপনি দুটি উপায়ে পরিবেশের ভেরিয়েবল নির্দিষ্ট করতে পারবেন:
একটি ফাইল মাধ্যমে
বলুন যে আপনি একটি ফাইলের মধ্যে পরিবেশের ভেরিয়েবল সেট করেছেন:
$ cat /path/to/some/file
FOO=bar
তারপরে, আপনি ওভাররাইডে যুক্ত করতে পারেন:
[Service]
EnvironmentFile=/path/to/some/file
বিশেষত, যদি আপনার /etc/default/grub
কেবলমাত্র অ্যাসাইনমেন্ট থাকে এবং কোনও শেল সিনট্যাক্স না থাকে তবে আপনি এটি হিসাবে ব্যবহার করতে পারেন EnvironmentFile
।
Environment
এন্ট্রি মাধ্যমে
নিম্নলিখিত ওভাররাইড ব্যবহার করে উপরেরগুলিও সম্পাদন করা যেতে পারে:
[Service]
Environment=FOO=bar
যাইহোক, এই একাধিক ভেরিয়েবল, স্পেস, ইত্যাদি কটাক্ষপাত আছে সঙ্গে চতুর পেতে পারেন আমার অন্যান্য উত্তর এক ধরনের একটি দৃষ্টান্ত একটি উদাহরণ জন্য।
আরও পড়া
এই প্রক্রিয়াটির মাধ্যমে, systemd
ইউনিটগুলিকে ওভাররাইড করা খুব সহজ হয়ে যায় , পাশাপাশি এই জাতীয় পরিবর্তনগুলি পূর্বাবস্থায় ফেলা (কেবল ওভাররাইড ফাইলটি সরিয়ে দিয়ে)। এগুলি কেবলমাত্র সেটিংসই নয় যা পরিবর্তিত হতে পারে।
নিম্নলিখিত লিঙ্কগুলি দরকারী হবে:
ExecStart=
ফাঁকা এন্ট্রি দিয়ে সাফ করার সময় আপনি এটি পছন্দ করার পরে কোনও মন্তব্য রাখতে পারবেন না:ExecStart= # Empty line to clear previous entries.
এটি অন্যExecStart=
এন্ট্রি হিসাবে নেওয়া হবে এবং তালিকায় যুক্ত হবে। গীত। আমার খ্যাতি কম থাকার কারণে আমি মুড়ুর উত্তরে মন্তব্য যুক্ত করতে পারিনি।