সিস্টেমডের জন্য কীভাবে স্টার্টআপ স্ক্রিপ্ট লিখবেন write


233

আমার ল্যাপটপে আমার কাছে 2 গ্রাফিক্স কার্ড রয়েছে। একটি হলেন আইজিপি এবং অপরজন আলাদা।

আমি পৃথক গ্রাফিক্স কার্ড বন্ধ করতে একটি শেল স্ক্রিপ্ট লিখেছি।

প্রারম্ভকালে এটি চালানোর জন্য আমি কীভাবে এটি সিস্টেমড স্ক্রিপ্টে রূপান্তর করতে পারি?

উত্তর:


332

এটি করার জন্য প্রধানত দুটি পন্থা রয়েছে:

  • যদি আপনাকে কোনও স্ক্রিপ্ট চালাতে হয় তবে আপনি এটিকে রূপান্তর করবেন না বরং কোনও systemdপরিষেবার মাধ্যমে স্ক্রিপ্টটি চালান ।

সুতরাং আপনার দুটি ফাইল দরকার: স্ক্রিপ্ট এবং .serviceফাইল (ইউনিট কনফিগারেশন ফাইল)।
আপনার স্ক্রিপ্ট নির্বাহযোগ্য এবং প্রথম লাইন ( শেবাং ) রয়েছে তা নিশ্চিত করুন #!/bin/sh। তারপরে .serviceফাইলটি তৈরি করুন /etc/systemd/system(একটি সরল পাঠ্য ফাইল, আসুন এটি কল করুন vgaoff.service)।
উদাহরণ স্বরূপ:

  1. এই পান্ডুলিপি: /usr/bin/vgaoff
  2. ইউনিট ফাইল: /etc/systemd/system/vgaoff.service

এখন, ইউনিট ফাইল সম্পাদনা করুন। এটির লিখিত সামগ্রী আপনার স্ক্রিপ্ট কীভাবে কাজ করে তার উপর নির্ভর করে:

যদি vgaoffকেবল জিপিইউ বন্ধ করে দেয়, যেমন:

exec blah-blah pwrOFF etc 

তারপরে বিষয়বস্তু হওয়া vgaoff.serviceউচিত:

[Unit]
Description=Power-off gpu

[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff

[Install]
WantedBy=multi-user.target

যদি vgaoffজিপিইউটি বিদ্যুৎ বন্ধ করতে এবং এটি আবারও বিদ্যুৎ ব্যবহার করতে ব্যবহৃত হয়, যেমন:

start() {
  exec blah-blah pwrOFF etc
}

stop() {
  exec blah-blah pwrON etc
}

case $1 in
  start|stop) "$1" ;;
esac

তারপরে বিষয়বস্তু হওয়া vgaoff.serviceউচিত:

[Unit]
Description=Power-off gpu

[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff start
ExecStop=/usr/bin/vgaoff stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
  • সবচেয়ে তুচ্ছ মামলার ক্ষেত্রে, আপনি স্ক্রিপ্ট ছাড়াই করতে পারেন এবং একটি নির্দিষ্ট আদেশ সরাসরি চালিত করতে পারেন:

বিদ্যুৎ বন্ধ করতে:

[Unit]
Description=Power-off gpu

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"

[Install]
WantedBy=multi-user.target

বন্ধ এবং চালু করতে:

[Unit]
Description=Power-off gpu

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
ExecStop=/bin/sh -c "echo ON > /whatever/vga_pwr_gadget/switch"
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

ফাইলগুলি শেষ হয়ে গেলে, পরিষেবাটি সক্ষম করুন:

systemctl enable vgaoff.service

এটি পরবর্তী বুটে স্বয়ংক্রিয়ভাবে শুরু হবে। আপনি এমনকি একসাথে পরিষেবা সক্ষম করতে এবং শুরু করতে পারেন

systemctl enable --now vgaoff.service

হিসাবে systemd v.220(পুরানো সেটআপগুলিতে আপনাকে এটি ম্যানুয়ালি শুরু করতে হবে)।
আরও তথ্যের জন্য systemd.serviceম্যানুয়াল পৃষ্ঠা দেখুন।


সমস্যা সমাধান
এখানে শুরু করুন:
কোনও systemdপরিষেবার সম্পূর্ণ লগ কিভাবে দেখবেন ?
systemdপরিষেবা প্রস্থান কোড এবং স্থিতির তথ্য ব্যাখ্যা


বিস্তারিত উত্তরের জন্য ধন্যবাদ। স্ক্রিপ্টে একটি কমান্ড রয়েছে "প্রতিধ্বনি বন্ধ করুন </ sys / কার্নেল / ডিবাগ / ভ্যাগসুইচারু / স্যুইচ"
শারিক

এটি নিম্নলিখিত বার্তায় vgaoff.service- এর সাথে ব্যর্থ হয়েছে - পাওয়ার-অফ জিপিইউ লোড হয়েছে: লোডড (/usr/lib/systemd/system/vgaoff.service; সক্ষম) সক্রিয়: ব্যর্থ হয়েছে (ফলাফল: প্রস্থান-কোড) মঙ্গল থেকে 11 সেপ্টেম্বর 23 23: 46:46 +0530; 30s পূর্বে প্রক্রিয়া: 5258 এক্সকস্টার্ট = / usr / lib / সিস্টেমড / স্ক্রিপ্ট / ভিগাফ (কোড = উপস্থিত, স্থিতি = 203 / এক্সইসি) সিগ্রুপ: নাম = সিস্টেমড: / সিস্টেমে / ভিগাওএফ.সার্ভিস
শেরিক

উফফ, আবার নয়, আমি এই ছোট জিনিসটি মিস করেছি, এটি ঠিকঠাক কাজ করছে .. আবার ধন্যবাদ thanks
শারিক

5
@ বাজন - এই যুক্তি অনুসারে, এই সাইটের হাজার হাজার উত্তর অনভিজ্ঞ ব্যবহারকারীদের জন্য "সম্ভাব্য ফাঁদ"। যাঁরা জানেন না / সম্পূর্ণরূপে জানেন echo SOMETHING > /some/fileনা (বা অন্য কোনও কমান্ড সত্য হিসাবে) তাদের সিস্টেমে স্টাফ চালানোর চেষ্টা করার আগে সিএলআইয়ের বেসিকগুলির সাথে পরিচিত হওয়া উচিত। এদিকে , এফওয়াইআই, বিভিন্ন ল্যাপটপ মডেলগুলিতে কীভাবে ডিজিপিইউ স্যুইচ করবেন তা পড়ুন , দেখুন যেখান থেকে ব্যবহৃত কমান্ডগুলি আপনার প্রস্তাব মতো কিছু দিয়ে প্রতিস্থাপন করা যায় কিনা could এছাড়াও, মূল ফাইলটি পুনরুদ্ধার করতে আপনি সাধারণত প্যাকেজটির মালিকানাযুক্ত এটি পুনরায় ইনস্টল করুন।
don_crissti

4
@ ডন_ক্রিস্তি উফ! ভকভগক. (বিভ্রান্তিকর তথ্যের প্রচার এড়ানোর জন্য আমার মূল মন্তব্যটি মুছে ফেলা হয়েছে))
উড্রো বার্লো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.