উত্তর:
OnFailure=
বিভাগে একটি নির্দেশ রয়েছে [Unit]
, systemd.unit (5) এ নথিভুক্ত । এটা অনুসরণ হিসাবে সংজ্ঞায়িত করা হয়:
এক বা একাধিক ইউনিটের একটি স্থান-বিভাজিত তালিকা যা এই ইউনিটটি "ব্যর্থ" অবস্থায় প্রবেশ করার পরে সক্রিয় হয়।
(এছাড়াও OnFailureJobMode=
একই বিভাগে একটি নির্দেশ রয়েছে যা অনফয়েল = ইউনিট সক্রিয় করার জন্য কাজের মোড সেট করতে দেয়))
/etc/systemd/system
এবং এর নামটি OnFailure=
নির্দেশিকায় রাখুন।
আপনি ExecStopPost
ইউনিট শুরু করার পরিবর্তে সরাসরি কমান্ড চালাতে ব্যবহার করতে পারেন ।
আমি OnFailure
সেটিংটি নিয়ে খুশি ছিলাম না তাই আমি সন্ধান করে দেখতে পেলাম ExecStopPost
।
নিম্নলিখিত বাস্তব উদাহরণ, যদি মূল কাজটি ব্যর্থ হয় তবে systemd একটি git
কমান্ড চালাবে ।
[Unit]
Description=SRI Dispenser Server
ConditionPathExists=|/usr/bin/
After=sri-boot-dsp.service
[Service]
WorkingDirectory=/usr/share/sri/configurations/transmitter
User=root
# This is task to run when this service starts
ExecStart=/usr/bin/python -m sri.DispenserServer
# If any of the ExecStart tasks fail, then ExecStopPost will run
ExecStopPost=/bin/git checkout -- .
Restart=always
RestartSec=10
KillSignal=SIGKILL
[Install]
WantedBy=multi-user.target
https://www.freedesktop.org/software/systemd/man/systemd.service.html
এক্সিকিউসপোস্ট = অতিরিক্ত কমান্ডগুলি যা পরিষেবা বন্ধ হওয়ার পরে কার্যকর করা হয়। এটি এমন ক্ষেত্রে অন্তর্ভুক্ত করে যেখানে এক্সিকসটপ = এ কনফিগার করা কমান্ডগুলি ব্যবহৃত হয়েছিল, যেখানে পরিষেবাটিতে কোনও এক্সিকিস্টপ = সংজ্ঞায়িত নেই, বা যেখানে পরিষেবা অপ্রত্যাশিতভাবে উপস্থিত হয়েছিল। এক্সিকিস্টার্ট = এর জন্য বর্ণিত একই স্কিমটি অনুসরণ করে এই যুক্তিটি একাধিক কমান্ড লাইন গ্রহণ করে। এই সেটিংস ব্যবহার alচ্ছিক। সুনির্দিষ্ট এবং পরিবেশ পরিবর্তনশীল বিকল্প সমর্থিত। মনে রাখবেন - এক্সিকিউসটপ = এর বিপরীতে - এই পরিষেবাটি নির্দিষ্ট করা কমান্ডগুলি যখন কোনও পরিষেবা সঠিকভাবে শুরু করতে ব্যর্থ হয় এবং আবার বন্ধ হয়ে যায় তখন সেগুলি ডাকা হয়।
ক্লিন-আপ অপারেশনের জন্য এই সেটিংটি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে যা পরিষেবাটি সঠিকভাবে শুরু করতে ব্যর্থ হলেও কার্যকর করা হবে। এই সেটিং দিয়ে কনফিগার করা কমান্ডগুলি পরিষেবাটি অর্ধ-পথ শুরু করতে ব্যর্থ হয়েও এবং প্রায় অসম্পূর্ণভাবে আরম্ভীকৃত ডেটা রেখে গেলেও পরিচালনা করতে সক্ষম হওয়া দরকার। পরিষেবাটির প্রক্রিয়াগুলি ইতিমধ্যে বন্ধ হয়ে গেছে যখন এই সেটিং সহ নির্দিষ্ট আদেশগুলি কার্যকর করা হয় তাদের সাথে যোগাযোগ করার চেষ্টা করা উচিত নয়।
নোট করুন যে এই কমান্ডের সাথে কনফিগার করা সমস্ত কমান্ডগুলি পরিষেবার ফলাফলের কোডের পাশাপাশি মূল প্রক্রিয়াটির প্রস্থান কোড এবং স্থিতি হিসাবে সেট করা হবে VIC SERVICE_RE ਸਲਾਹT, $ EXIT_CODE এবং $ EXIT_STATUS পরিবেশের ভেরিয়েবলগুলি, systemd.exec দেখুন (5) বিশদ জন্য।