최대 절전 모드 중 실행되지 않을 때의 사용자 정의 명령

최대 절전 모드 중 실행되지 않을 때의 사용자 정의 명령

Debian Buster가 절전 모드로 전환되기 전에 사용자 정의 명령을 실행해야 합니다. 이것문서스크립트를 /etc/pm/sleep.d 디렉토리에 배치함을 나타냅니다. 다음 스크립트를 만듭니다.

#!/bin/sh

echo "`date` script started" >> scriptStarted.txt

case "$1" in
        hibernate|suspend)
                /home/<user-name>/scripts/killProcess.sh

                ;;
        thaw|resume)
                ;;
        *) exit $NA
                ;;
esac

문제는 스크립트가 실행되지 않는다는 것입니다.

/usr/lib/pm-utils/sleep.d/ 디렉토리도 시도했지만 문제는 동일합니다.

답변1

문제는 Debian Buster가 pm이 아닌 systemd를 사용한다는 것입니다.

스크립트를 /lib/systemd/system-sleep에 넣으면 시스템이 중단되기 전에 실행됩니다.

#!/bin/sh 

PATH=/sbin:/usr/sbin:/bin:/usr/bin 

case "$1" in 
   pre) 
           echo "`date` pre suspending executed" >> /home/<user-name>/scripts/execution.log
           #code execution BEFORE sleeping/hibernating/suspending 
   ;; 
   post) 
           #code execution AFTER resuming 
   ;; 
esac 

exit 0

그러나 최대 절전 모드에서는 이 솔루션이 여전히 작동하지 않습니다. 시스템이 최대 절전 모드일 때는 이 스크립트가 실행되지 않습니다.

마지막으로 맞춤형 서비스를 만들었습니다. my-hibernate.service 파일을 /usr/lib/systemd/system에 배치했습니다.

[Unit] 
Description=Some description 
Before=hibernate.target 
StopWhenUnneeded=yes 

[Service] 
Type=oneshot 
RemainAfterExit=yes 
ExecStart=/home/<user-name>/scripts/my-script.sh 

[Install] 
WantedBy=hibernate.target

다음으로 서비스를 활성화했습니다.

sudo systemctl enable my-hibernate.service

이 단계를 완료하면 최대 절전 모드 전에 사용자 정의 스크립트가 실행됩니다.

관련 정보