Câu hỏi hay. Tôi đã thử những gì bây giờ tôi nhận ra rằng bạn đã cố gắng lên lịch tắt máy và truy vấn bộ định thời systemd!
Điều đó cho thấy việc tắt máy không nằm trong bộ định thời systemd, như bạn đã lưu ý. Vì vậy, một sự hỗ trợ nhanh chóng của nguồn systemctl cho chúng ta cuộc gọi này, như là một phần của 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 dòng 7387 )
Vì vậy, nó sẽ xuất hiện rằng tắt máy được xử lý bởi logind
. Bạn có thể tiếp tục theo đuổi các chi tiết nếu bạn muốn xem login-dbus.c
. Có các phương pháp để lập lịch, hủy bỏ, quản lý tắt máy. Nhưng để hiểu sâu hơn, bạn có thể cần biết nhiều hơn về logind / systemd hơn tôi.
Tóm lại, thông tin tắt máy được lưu trữ (ít nhất) trong một tệp lịch biểu tại /run/systemd/shutdown/scheduled
, nội dung của tôi là một ví dụ là:
USEC=1435715559055789
WARN_WALL=1
MODE=poweroff
Chỉ thời gian (tính bằng micro giây, có lẽ); có cảnh báo thông qua không wall
, và chế độ nào (cf restart, kexec, v.v.).
Hy vọng điều này chỉ cho bạn đi đúng hướng ít nhất!