저는 Debian 8을 사용하고 있으며 systemd와 함께 Linux 4.1.2를 사용하여 시스템을 부팅했습니다. 작업을 수행하고 컴퓨터를 일시 중지하는 작업 스크립트가 있습니다. 업그레이드 후에는 스크립트가 더 이상 작동하지 않습니다. systemd로 전환했을 때 작동하기 시작했습니다.
스크립트는 전원 버튼을 누를 때 작동하지만 처음에만 작동합니다. 복원 후 버튼이 작동하지 않습니다. 덮개 스위치 처리기 스크립트가 전혀 실행되지 않습니다.
왜 그럴까요?
편집하다:
/etc/acpi/actions/powerbtn-acpi-support.sh
전원 버튼을 누르면 핸들러 script()가 두 번 실행되는 것 같습니다. 결과적으로 일시 중지 스크립트가 중단되고 시스템이 다음 전원 버튼 누르기 이벤트에 응답하지 않게 됩니다.
/etc/acpi/events/powerbtn-acpi-support:
event=button[ /]power
action=/etc/acpi/actions/powerbtn-acpi-support.sh
편집 2:
이 문제에 대한 해결 방법으로 일시 중지 스크립트를 다음과 같이 변경했습니다.
#!/bin/bash
timestamp() {
date +"%s"
}
lfile=/home/ceremcem/cca-suspend.log
echo "simply log the output" >> "$lfile"
ts_file="/tmp/suspend-timestamp"
if [ -f $ts_file ]; then
echo "timestamp file is found"
prev=$(cat $ts_file)
echo "previous run: $prev"
time_diff=$(($(timestamp) -$prev))
echo "which means $time_diff seconds ago"
if [ $time_diff -lt 10 ]; then
echo "this script can not be run within 10 seconds..."
exit 1
fi
else
echo "timestamp file is not found"
fi
timestamp > "$ts_file"
if [[ $(id -u) > 0 ]]; then
if [[ "$DISPLAY" == "" ]]; then
env >> "$lfile"
sudo "$0" "$(whoami)"
else
env >> "$lfile"
gksu "$0" "$(whoami)"
fi
exit
fi
if [[ "$1" == "" ]]; then
user="ceremcem"
else
user="$1"
fi
echo "locking screen..."
/usr/local/bin/physlock -d -u $user
echo "suspending..."
pm-suspend
echo "exiting..."
exit 0
이제 전원 버튼을 누를 때마다 컴퓨터가 일시 중지됩니다.