종료 및 정지시 인증 필요 (아래 시간 예정)

종료 및 정지시 인증 필요 (아래 시간 예정)

다음을 사용하여 노트북을 일시 중지하고 싶습니다.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런타임 시 인증이 필요합니다. 직접 실행하면 인증이 필요하지 않고 컴퓨터가 일시 중지 상태로 들어가기 때문에 이것이 흥미롭습니다.atsystemctl suspendsystemctl suspendat

at을 사용하여 직접 실행하는 명령과 동일한 루트가 아닌 사용자가 실행을 사용하는 명령을 실행하는지 확인했습니다 echo "echo $(who) > who.txt" | at now.

at부팅 후 실행한 명령(bash의 별칭)을 통해 명령을 실행하므로 의심되는 인증이 필요합니다 . 정지는 인증 없이 즉시 발생하며 중첩된 쉘이 정지 실패의 원인이 아님을 나타냅니다./bin/shsystemctl suspend/bin/shat

echo "reboot" | at now실행할 때 동일한 동작과 매우 유사한 메시지가 나타납니다 echo "shutdown now" | at now.

내 질문은: 컴퓨터를 일시 중지, 다시 시작 또는 종료하려고 하는지 어떻게 logind알 수 있으며 , 인증 없이 해당 명령을 실행할 수 있는지 어떻게 알 수 있습니까?atlogindat


저는 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.

관련 정보