为什么我的 powerbutton 脚本在 14.04 LTS 和 16.04 LTS 下不再起作用?

为什么我的 powerbutton 脚本在 14.04 LTS 和 16.04 LTS 下不再起作用?

我有一个基于 ubuntu 16.04 LTS 的小型家庭服务器,没有图形用户界面。它安装了 10.04 LTS 并始终升级。在版本 13 中,我通过脚本更改了电源按钮的行为,以实现在两秒内按下一次电源按钮时关机,按下两次电源按钮时挂起。在升级到版本 14.04 之前,该脚本运行良好。在此之前,只有通过命令行启动脚本时,脚本才会起作用。如果它通过 powerbutton-event 运行,它总是会发出两声哔哔声,然后服务器进入睡眠状态。看起来 if 结构不起作用!?当我在if [[ -e $LOCKFILE ]]测试语句周围加上双括号时,我取得了一点成功。if 结构起作用了,但删除锁文件不起作用。

/etc/acpi/powerbutton.sh(绑定到 powerbutton 事件):

#!/bin/sh
# /etc/acpi/powerbtn.sh

[ -r /usr/share/acpi-support/power-funcs ] && . /usr/share/acpi-support/power-funcs
# call the subscript as single threat
/etc/acpi/suspend_or_shutdown.sh &

/etc/acpi/suspend_or_shutdown.sh:

#!/bin/sh
#/etc/acpi/suspend_or_shutdown.sh

[ -r /usr/share/acpi-support/power-funcs ] && . /usr/share/acpi-support/power-funcs

# 1x pressed = halt (within 2s)
# 2x pressed = suspend to disk

#Skip if we just in the middle of resuming
test -f /var/lock/acpisleep && exit 0

#file for decision
LOCKFILE=/var/lock/suspend_or_shutdown.lock

#acustic feedback 
beep -l 50 -D 500

#exists /run/lock/suspend_or_shutdown.lock ?
if [ -e $LOCKFILE ]
then
    #yes -> suspend (power button pressend second time)
    #del lockfile
    rm $LOCKFILE
    # 2x beep for feedback
    beep -r 2 -d 100
    # SLEEP to S3
#   pm-suspend
### OR ###
    acpitool --suspend
else
    #no -> create lockfile with PID
    echo "$$" > $LOCKFILE
    #wait 2s
    sleep 2
    #if pressed 2x, lockfile is deleted
    if [ -e $LOCKFILE ]
    then
        #delete lockfile
        rm $LOCKFILE
        # 1x beep
        beep
        # shutdown server
        shutdown -h now "Power button pressed"
    else
        exit 0
    fi
fi

我不知道为什么脚本不起作用(除非通过命令行)。如果有人知道,请告诉我……非常感谢 :-)

史基

相关内容