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
이 단계를 완료하면 최대 절전 모드 전에 사용자 정의 스크립트가 실행됩니다.