내가 입력 shutdown -h +30
하면 Linux는 어떻게 든 30 분 이내에 런레벨 변경을 예약합니다. 데비안에서는 /sbin/shutdown
에 대한 심볼릭 링크 /bin/systemctl
입니다. 내 테스트에 따르면 cron 또는 systemd 타이머를 사용 shutdown
하지 않는 것으로 나타났습니다 .
시스템 종료는 어떻게 구현 systemd
됩니까?
내가 입력 shutdown -h +30
하면 Linux는 어떻게 든 30 분 이내에 런레벨 변경을 예약합니다. 데비안에서는 /sbin/shutdown
에 대한 심볼릭 링크 /bin/systemctl
입니다. 내 테스트에 따르면 cron 또는 systemd 타이머를 사용 shutdown
하지 않는 것으로 나타났습니다 .
시스템 종료는 어떻게 구현 systemd
됩니까?
답변:
좋은 질문. 나는 당신이 셧다운을 예약하고 시스템 타이머를 쿼리하려고 시도했음을 깨달았습니다.
그것은 당신이 언급했듯이 시스템 타이머에 셧다운이 없다는 것을 보여주었습니다. 따라서 systemctl 소스에 대한 빠른 설명은 다음의 일부로이 호출을 제공합니다 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);
따라서 종료가에 의해 처리되는 것처럼 보입니다 logind
. 원하는 경우 세부 정보를 계속 추구 할 수 있습니다 login-dbus.c
. 종료 예약, 취소, 관리 방법이 있습니다. 그러나 더 깊이 이해하려면 내가 로그인 한 것보다 시스템에 로그인해야합니다.
간단히 말해서, 종료 정보는 적어도 일정 파일에 (적어도) 저장 /run/systemd/shutdown/scheduled
되며, 예를 들어 내 내용은 다음과 같습니다.
USEC=1435715559055789
WARN_WALL=1
MODE=poweroff
표시 시간 (마이크로 초) 를 통해 경고할지 여부 wall
와 어떤 모드 (cf restart, kexec 등).
이것이 올바른 방향으로 적어도 당신을 가리 키기를 바랍니다!