다음을 사용하여 노트북을 일시 중지하고 싶습니다.at
:
echo "systemctl suspend" | at now + 5 minutes
at
일시 중지가 발생하지 않았으며 대신 다음 에서 이메일을 찾았습니다 /var/spool/mail/me
.
Failed to set wall message, ignoring: Interactive authentication required.
Failed to suspend system via logind: Interactive authentication required.
Failed to start suspend.target: Interactive authentication required.
See system logs and 'systemctl status suspend.target' for details.
알겠습니다. logind
런타임 시 인증이 필요합니다. 직접 실행하면 인증이 필요하지 않고 컴퓨터가 일시 중지 상태로 들어가기 때문에 이것이 흥미롭습니다.at
systemctl suspend
systemctl suspend
at
at
을 사용하여 직접 실행하는 명령과 동일한 루트가 아닌 사용자가 실행을 사용하는 명령을 실행하는지 확인했습니다 echo "echo $(who) > who.txt" | at now
.
at
부팅 후 실행한 명령(bash의 별칭)을 통해 명령을 실행하므로 의심되는 인증이 필요합니다 . 정지는 인증 없이 즉시 발생하며 중첩된 쉘이 정지 실패의 원인이 아님을 나타냅니다./bin/sh
systemctl suspend
/bin/sh
at
echo "reboot" | at now
실행할 때 동일한 동작과 매우 유사한 메시지가 나타납니다 echo "shutdown now" | at now
.
내 질문은: 컴퓨터를 일시 중지, 다시 시작 또는 종료하려고 하는지 어떻게 logind
알 수 있으며 , 인증 없이 해당 명령을 실행할 수 있는지 어떻게 알 수 있습니까?at
logind
at
저는 Arch Linux 4.18.1, at
버전 3.1.19를 사용하고 있습니다.
답변1
아마도 실행 중인 명령은 at
다른 환경에 있으며 tty 장치 및 dbus 설정 등에 액세스할 수 없습니다.
Systemd에는 자체 at
버전의 명령이 있습니다. 이를 사용하여 다른 시스템 명령이 실행되는 것처럼 보이는 환경에서 명령을 실행할 수 있습니다. 따라서 동등한 명령을 사용하십시오.
systemd-run --user --on-active=5min /bin/systemctl suspend
5분 대기 시간을 완벽하고 정확하게 구현하려면 옵션을 추가해야 합니다 --timer-property=AccuracySec=1
.