Иногда сталкивался с ситуациями когда консоль/иксы зависают и не реагируют на клавиатуру, при том что комп очевидно жив.
Чаще случаются ситуации когда комп надо выключить, для того его надо разбудить, возможно ввести имя-пароль, затем набрать команду или нажать кнопку в иксах.
Вот накатал программку, менее универсальный, но более специализированный аналог acpid. Слушает /proc/acpi/event и реагирует на последовательности нажатий кнопки питания.
Последовательность - несколько нажатий, с интервалом менее секунды.
Например - N нажатий, программа переходит в "режим команд" - ожидает следующей последовательности - от 1 до 5 нажатий, и выполняет от 1 до 5 команд, которые указываются в качестве параметра. Если нажатий не было в течение T секунд - программа переходит в исходное состояние, и снова ждет ввода. Фактически, если не нажимать кнопку, программа висит в бесконечном select, и не просыпается до нажатия кнопки power.
Пример комадной строки
powerd -n 2 -t 10 "/usr/bin/killall icewm" "/sbin/init 0" "/sbin/init 6"
Последовательности нажатий на которые реагирует программа
2 нажатия, пауза от 1 до 10 сек, 1 нажатие - убить оконный менеджер
2 нажатия, пауза от 1 до 10 сек, 2 нажатия - выключить комп
2 нажатия, пауза от 1 до 10 сек, 3 нажатия - перезагрузить комп
Остальные последовательности игнорируются.
Вполне возможно что подобное давно написано. Тем не менее - исходник в атта
http://garuda.newmail.ru/powerd.tgz