আমি কি পুনরায় চালু না করে সিস্টেমে পুনরায় চালু করতে পারি?


39

আমি yum updateআরএইচএল 7.৪ এর পরে পরিষেবাগুলি পুনঃসূচনা করার চেষ্টা করছি । আমি systemctl ব্যবহার প্রত্যেক সেবা পুনরায় চালু পারে, কিন্তু needs-restartingথেকে yum utilsআমাকে বলে যে আমি নিজেই systemd পুনর্সূচনা করা উচিত:

# needs-restarting
1 : /usr/lib/systemd/systemd --system --deserialize 21

আমি systemdসার্ভারটি রিবুট না করে পুনরায় চালু করতে পারি , এবং কীভাবে?

আমি কয়েকটি উল্লেখ পেয়েছি systemctl daemon-reload, কিন্তু এটি এটি পুনরায় আরম্ভের প্রয়োজন তালিকা থেকে অদৃশ্য হয়ে যায় না।

উত্তর:


43

ডেমন পুনরায় চালু করতে, চালান

systemctl daemon-reexec

এই নথিভুক্ত করা র manpage :systemctl

সিস্টেমড ম্যানেজারকে পুনরায় সরিয়ে দিন। এটি ম্যানেজারের রাজ্যটিকে সিরিয়ালাইজ করবে, প্রক্রিয়াটিকে পুনরায় সাজিয়ে তুলবে এবং রাষ্ট্রটিকে আবার ডিজিটালাইজ করবে। ডিবাগিং এবং প্যাকেজ আপগ্রেড ব্যতীত এই আদেশটি অল্প ব্যবহারযোগ্য। কখনও কখনও এটি ভারী ওজন হিসাবে সহায়ক হতে পারে daemon-reload। ডেমনটি পুনরায় সংশোধন করা হচ্ছে, ব্যবহারকারী কনফিগারেশনের পক্ষ থেকে সমস্ত সকেট সিস্টেম শোনা অ্যাক্সেসযোগ্য থাকবে।

দুর্ভাগ্যক্রমে এটি পুনরায় আরম্ভ হয়েছে needs-restartingতা নির্ধারণ করতে পারে না systemdsystemd execsপুনরায় আরম্ভ করার জন্য, যা প্রক্রিয়াটির প্রারম্ভিক সময়টিকে পুনরায় সেট করে না; তবে needs-restartingপ্রক্রিয়াটি পুনরায় আরম্ভ করা প্রয়োজন কিনা তা নির্ধারণের জন্য এক্সিকিউটেবলের পরিবর্তনের সময়টির তুলনা করে (অন্যান্য জিনিসগুলির মধ্যে), এবং ফলস্বরূপ এটি সর্বদা বিবেচনা করে যে systemdপুনরায় আরম্ভ করা দরকার ... তা নির্ধারণ করার জন্য, systemdসত্যিই পুনরায় আরম্ভ করা দরকার কিনা তা নির্ধারণ করার জন্য, আপনি এর আউটপুটটি চেক করতে পারেন lsof -p1 | grep deleted: systemdএকটি লাইব্রেরি ব্যবহার করে libsystemd-sharedযা একই প্যাকেজে পাঠানো হয় এবং এটি ডেমনের পাশাপাশি আপগ্রেড করা হয়, সুতরাং যদি systemdপুনরায় চালু করার দরকার হয় তবে আপনি এটি লাইব্রেরির একটি মুছে ফেলা সংস্করণ ব্যবহার করে দেখতে পাবেন। যদি lsofকোনও মুছে ফেলা ফাইল না দেখায় systemdতবে পুনরায় আরম্ভ করার দরকার নেই। (ধন্যবাদইঙ্গিতটির জন্য জেফ শ্যাচলার !)


1
@ রমন, daemon-reexecএমনকি পিড systemd১ হিসাবে কাজ করার কথা রয়েছে ।
স্টিফেন কিট ২৪'১৮

3
পুনরায় আরম্ভের প্রয়োজনগুলি ক্রমশ github.com/rpm-software-management/yum/blob/master/… এ ফোটে যেখানে এটি পিআইডি "স্টার্টটাইম" কে জিজ্ঞাসাবাদ করে; যদি ডেমন-রেক্সেক এটি আপডেট না করে, পুনরায় আরম্ভ করা "বিভ্রান্ত" থাকবে।
জেফ স্ক্যালার হলেন

1
ধরে নিবেন না যে কোনও কোডেপথ জড়িত রয়েছে, বিশেষত রেডহ্যাট সিস্টেমগুলিতে ভালভাবে পরীক্ষিত। ডেমন-রেক্সেক চালানো প্রযুক্তিগতভাবে সম্ভব তবে এটি পুনরায় বুট করা আরও নিরাপদ।
হ্যারাল্ড

2
@ হারাল্ড এটি যে কোনও সময় systemdডেবিয়ান এবং ডেরিভেটিভগুলিতে আপগ্রেড করার জন্য ব্যবহার করা হয়েছে , সুতরাং এটি ভালভাবে পরীক্ষিত। এটিও যুক্তিসঙ্গতভাবে সোজা (অনুসন্ধান করুন do_reexecute)।
স্টিফেন কিট

1
@ স্টেফেনকিট - যখন আমি চালানোর চেষ্টা করি তখন lsof -p1 | grep deletedনীচের আউটপুট তৈরি হয় lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete। পড়ার ক্ষেত্রে ( ইউনিক্স.স্ট্যাকেক্সেঞ্জাওয়েশনস / সেকশনস / 171519/… ), দেখা যাচ্ছে যে এমনকি রুট এটি অ্যাক্সেস করতে অক্ষম। বিকল্প কি হবে lsof -p1 | grep deleted?
অনুপ্রাণিত

2

আমার ক্ষেত্রে, আমি সবেমাত্র আপগ্রেড করেছি systemdএবং কোনও systemctlআদেশ ব্যর্থ হয়েছিল:

# systemctl daemon-reexec
Failed to reload daemon: Access denied
# systemctl status
Failed to read server status: Access denied

তবে initম্যানপেজ অনুসারে , আপনি ডিআইমনকে SIGTERMপিআইডি 1 হিসাবে চালাচ্ছেন, যা কাজ করেছিল:

kill -TERM 1

এটি ডেমনটি পুনরায় লোড করেছে, তারপরে সমস্ত systemctlকমান্ড আবার কাজ করা শুরু করে।

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