편집하다:

편집하다:

저는 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

이제 전원 버튼을 누를 때마다 컴퓨터가 일시 중지됩니다.

관련 정보