我想自定义电源按钮操作。教程位于http://blog.metalight.dk/2010/07/ubuntu-lucid-custom-power-button-event/有效但并非总是如此(关闭进程的数量有时会有所不同)。
我需要解决方案
- 按下 1 次按钮即可执行常规操作系统关闭
- 按三次按钮执行操作系统重启
您将如何为其编写代码?文件:/etc/acpi/powerbtn.sh
#!/bin/sh
# /etc/acpi/powerbtn.sh
# Initiates a shutdown when the power putton has been
# pressed.
# you need to double 'click' the power button to shutdown
( if ! [ $(pidof -x powerbtn.sh | wc -w) -eq 3 ]; then
sleep .4
exit
else
poweroff
fi
) &
答案1
进程数不应该不同。计算 pid 时,你必须记住包括脚本本身和创建的子进程。
我创建了以下内容,应该可以满足您的要求。您应该根据您希望多次按下按钮的速度来更改超时。
#!/bin/sh
# /etc/acpi/powerbtn.sh
# Initiates a shutdown when the power putton has been
# pressed.
timeout=0.8
pid_count=$(pidof -x powerbtn.sh | wc -w)
( if [ $pid_count -eq 4 ]; then
sleep $timeout
/etc/acpi/sleep.sh
else
sleep $timeout
pid_count_now=$(pidof -x powerbtn.sh | wc -w)
if [ $pid_count_now -eq 2 ] && [ $pid_count -eq 2 ]; then
poweroff
fi
exit
fi
) &