잠시 잠을 자는 방법 |

잠시 잠을 자는 방법 |

다음 규칙에 따라 노트북 덮개를 닫는 동작을 제공하려고 합니다.

뚜껑을 닫았을 때:

  1. 화면은 1m 후에 잠기게 됩니다.
  2. 10분 후에 일시 중지합니다.
  3. 15m 후에는 기계를 멈춰야 합니다.

그래서 다음과 같은 스크립트를 작성했습니다.

#!/bin/bash
 
USER=fauve
 

sleep 1m
# set screensaver
su -c  "$HOME/.local/bin/screenlock" - $USER

# hibernate
sleep 9m
systemctl suspend


sleep 5m
# shutdown
shutdown 0

하지만 보시다시피 shutdown이는 노트북이 일시 중지된 상태일 때 발생하므로 절대로 종료되지 않습니다.

그렇다면 5분 동안 일시 중지하거나 종료한 다음 스크립트가 컴퓨터를 완전히 종료하도록 하는 프로그램을 어떻게 작성합니까?

답변1

간단히 말해서, 당신은 할 수 없습니다. 적어도 소프트웨어에 관해서는 그렇지 않습니다. 컴퓨터를 일시 중단 상태로 전환하면 컴퓨터가 일시 중단됩니다. 이와 같은 소프트웨어 sleep(또는 더 정확하게는 주어진 시간 후에 작업을 깨우도록 커널에 지시하는 시스템 스틱이나 타이머)는 실행되지 않습니다.

따라서 여기서 유일한 질문은 하드웨어 솔루션입니다. 노트북을 깨우고 일시 중지 상태에서 벗어나려면 알람이 필요합니다!

다행히도 이것은 꽤 표준적인 것입니다.

echo 0 > /sys/class/rtc/rtc0/wakealarm
echo `date '+%s' -d "+ 5 minutes"` > /sys/class/rtc/rtc0/wakealarm
systemctl suspend
systemctl shutdown 

그렇게 할 것입니다. 노트북이 지원한다면.

나는 이 진술의 의미를 의심합니다. 스크립트 방식, 노트북언제나5분 이상 일시정지 종료 후 바로 종료됩니다. 내 생각에는 당신이 다른 것을 원하는 것 같아요. 내 생각엔 실제로 5분이 지났는지 확인하고, 그렇지 않은 경우 노트북이 수동으로 일시 중지 상태에서 해제되었다고 가정하고아니요끄십시오. 이런 경우에는 일시정지 전의 시간을 저장하여 일시정지 후의 시간과 비교해 보아야 합니다.

어쩌면 당신이 원하는가 systemctl suspend-then-hibernate? 이건 가능한 일인 것 같습니다. 내부적으로는 동일한 작업을 수행합니다. RTC를 사용하여 특정 지점에서 일시 중지를 종료한 다음 시스템 상태를 디스크에 저장하고 전원을 끕니다.~하지 않는 한전에는 수동으로 깨웠어요.

관련 정보