다음과 같은https://wiki.archlinux.org/index.php/Power_management#Hooks_in_/usr/lib/systemd/system-sleep, 실행 권한이 있는 시스템 슬립 후크로 쉘 스크립트를 추가했습니다(수동으로 만들었으며 /usr/lib/systemd/system-sleep/
기본적으로 존재하지 않습니다).
$ ls /usr/lib/systemd/system-sleep/ -l
total 4
-rwxr-xr-x 1 root root 322 Dec 2 19:28 systemd_suspend_cpu_freq.sh
그 내용은
#!/bin/sh
case "$1/$2" in
post/*)
echo "systemd_suspend hook" >>/tmp/mylog
;;
esac
처음으로 Lubuntu 18.04를 일시 중지했습니다.
$ systemctl suspend
User testme is logged in on seat0.
User testme is logged in on sshd.
User testme is logged in on seat0.
User testme is logged in on seat0.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl suspend -i'.
$ systemctl suspend -i
$
그런 다음 깨어나면 /tmp/mylog
내 스크립트로 작성해야 할 내용이 아무것도 발견되지 않습니다.
$ journalctl -b -u systemd-suspend.service
-- Logs begin at Mon 2018-11-12 13:25:27 EST, end at Sun 2018-12-02 19:30:04 EST. --
Dec 02 18:38:05 ocean systemd[1]: Starting Suspend...
Dec 02 18:38:05 ocean systemd-sleep[17888]: Suspending system...
Dec 02 18:51:16 ocean systemd[1]: Started Suspend.
Dec 02 19:29:30 ocean systemd[1]: Starting Suspend...
Dec 02 19:29:30 ocean systemd-sleep[20436]: Suspending system...
Dec 02 19:29:42 ocean systemd-sleep[20436]: /dev/sda:
Dec 02 19:29:42 ocean systemd-sleep[20436]: setting Advanced Power Management level to 0xfe (254)
Dec 02 19:29:42 ocean systemd-sleep[20436]: APM_level = 254
Dec 02 19:29:35 ocean systemd-sleep[20436]: System resumed.
Dec 02 19:29:42 ocean systemd[1]: Started Suspend.
일시 중지 상태에서 깨어날 때 왜 내 스크립트가 실행되지 않는지 궁금합니다.
감사해요.
고쳐 쓰다
주석의 다음 제안 사항은 깨우기 시 후크가 실행되지 않도록 합니다.
mkdir /home/t/tmpdir; chmod 777 /home/t/tmpdir
- 스크립트 로 리디렉션
/home/t/tmpdir/mylog
(아래에는 파일이 생성되지 않음/home/t/tmpdir/
)
답변1
같은 오류가 발생했습니다. 이것아치 리눅스 위키현재 스크립트를 배치할 위치가 잘못되었습니다. /lib/systemd/system-sleep/
대신에 스크립트를 넣어야 합니다 /usr/lib/systemd/system-sleep/
.
또한보십시오 man systemd-suspend.service
:
시스템 일시 중지 및/또는 최대 절전 모드에 들어가기 전에 systemd-suspens.service(및 언급된 다른 장치)는 /lib/systemd/system-sleep/에 있는 모든 실행 파일을 실행하고 두 인수를 전달합니다.