ভাল প্রশ্ন. আমি এখন যা বুঝতে পেরেছি তা চেষ্টা করে দেখেছি - আপনি অবশ্যই একটি শাটডাউন শিডিয়ুলিং এবং সিস্টেমেড টাইমারদের জিজ্ঞাসা করেছেন!
এটি প্রমাণ করেছে যে শাটডাউনটি সিস্টেমড টাইমারগুলিতে ছিল না, যেমনটি আপনি উল্লেখ করেছেন। সুতরাং সিস্টেমেটেক্টল উত্সের একটি দ্রুত উপলব্ধি আমাদের এই কলটি দেয়, এর অংশ হিসাবে halt_main()
:
r = sd_bus_call_method(
b,
"org.freedesktop.login1",
"/org/freedesktop/login1",
"org.freedesktop.login1.Manager",
"ScheduleShutdown",
&error,
NULL,
"st",
arg_action == ACTION_HALT ? "halt" :
arg_action == ACTION_POWEROFF ? "poweroff" :
arg_action == ACTION_KEXEC ? "kexec" :
"reboot",
arg_when);
( systemctl.c লাইন 7387 )
সুতরাং এটি প্রদর্শিত হবে যে শাটডাউনগুলি দ্বারা পরিচালিত হয় logind
। আপনি যদি চান- আপনি বিশদটি অনুসরণ করতে চালিয়ে যেতে পারেন login-dbus.c
। সময়সূচী, বাতিলকরণ, শাটডাউন পরিচালনা করার জন্য রয়েছে কয়েকটি পদ্ধতি। তবে আরও গভীর বোঝার জন্য আপনার চেয়ে লগইনড / সিস্টেমড সম্পর্কে আরও জানা দরকার।
দীর্ঘ গল্প সংক্ষেপে, শাটডাউন তথ্য একটি শিডিউল ফাইলটিতে (কমপক্ষে) সঞ্চিত থাকে /run/systemd/shutdown/scheduled
, উদাহরণ হিসাবে আমার বিষয়বস্তুটি ছিল:
USEC=1435715559055789
WARN_WALL=1
MODE=poweroff
সময় নির্দেশ করে (মাইক্রোসেকেন্ডে, সম্ভবত); কিনা wall
এবং কোন মোডের মাধ্যমে সতর্কতা অবলম্বন করা উচিত (সিএফ পুনঃসূচনা, কেেক্সেক ইত্যাদি)।
আশা করি এটি আপনাকে অন্তত সঠিক দিকে নির্দেশ করবে!