systemctl은 시스템 종료를 어떻게 예약합니까?


12

내가 입력 shutdown -h +30하면 Linux는 어떻게 든 30 분 이내에 런레벨 변경을 예약합니다. 데비안에서는 /sbin/shutdown에 대한 심볼릭 링크 /bin/systemctl입니다. 내 테스트에 따르면 cron 또는 systemd 타이머를 사용 shutdown하지 않는 것으로 나타났습니다 .

시스템 종료는 어떻게 구현 systemd됩니까?

답변:


11

좋은 질문. 나는 당신이 셧다운을 예약하고 시스템 타이머를 쿼리하려고 시도했음을 깨달았습니다.

그것은 당신이 언급했듯이 시스템 타이머에 셧다운이 없다는 것을 보여주었습니다. 따라서 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);

( systemctl.c 라인 7387 )

따라서 종료가에 의해 처리되는 것처럼 보입니다 logind. 원하는 경우 세부 정보를 계속 추구 할 수 있습니다 login-dbus.c. 종료 예약, 취소, 관리 방법이 있습니다. 그러나 더 깊이 이해하려면 내가 로그인 한 것보다 시스템에 로그인해야합니다.

간단히 말해서, 종료 정보는 적어도 일정 파일에 (적어도) 저장 /run/systemd/shutdown/scheduled되며, 예를 들어 내 내용은 다음과 같습니다.

USEC=1435715559055789
WARN_WALL=1
MODE=poweroff

표시 시간 (마이크로 초) 를 통해 경고할지 여부 wall와 어떤 모드 (cf restart, kexec 등).

이것이 올바른 방향으로 적어도 당신을 가리 키기를 바랍니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.