시스템을 종료하는 대신 사용자 정의 스크립트를 실행하도록 debian 10 systemd에서 전원 버튼 종료 동작을 변경하는 방법은 무엇입니까?
이 문제는 acpi에서 처리되지만 /etc/acpi에서 스크립트를 편집할 수 있습니다. 지금까지 내가 찾은 유일한 제안은 다양한 전원 관련 바이너리를 내 스크립트로 대체하는 것입니다.
바이너리를 교체하지 않고 이를 수행할 수 있는 방법이 있습니까?
답변1
그것은 당신이하고 싶은 일에 달려 있습니다.
특정 작업을 실행하는 동안 일시적으로 정전을 방지해야 하는 경우에만 이를 참조하십시오
systemd-inhibit
. 이와 같이 잠자기, 일시 정지 등을 방지할 수도 있습니다. 또한 일시적으로(프로그램이 실행되는 동안) systemd에 전원 버튼을 무시하도록 지시하여 다른 프로그램이 해당 버튼에서 작동하도록 할 수도 있습니다.종료하기 전에 추가 코드를 실행하려는 경우 로 서비스를 시작할 수 있습니다
poweroff.target
.shutdown.target
및 을 고려해 볼 수도 있습니다reboot.target
. (전원 버튼의 기능을 완전히 바꾸고 싶다면 당기지 않도록poweroff.target
변경할 .)systemd-poweroff.service
systemctl poweroff
poweroff
systemd의 전원 버튼 처리를 완전히 비활성화하려면 먼저 일반적으로 로그인하는 것과 같이 실제로 로그인하는지 알아야 합니다.
HandlePowerKey
의 옵션을 사용하면/etc/systemd/logind.conf
비활성화할 수 있습니다( 로 설정ignore
). 그런 다음 다른 프로그램에서 키 입력을 수신하도록 할 수 있습니다.
답변2
이것은 내가 바라던 해결책은 아니었지만 결국 내가 한 일은 다음과 같습니다.
환경
HandlePowerKey=ignore
/etc/systemd/logind.conf는 systemd에서 전원 키 처리를 제거합니다.
그 후에는 전원 버튼을 다른 키처럼 처리할 수 있습니다.
내 경우에는 다음에서 키 누르기 이벤트를 얻을 수 있습니다.
/dev/input/by-path/platform-r_gpio_keys-event
이 질문에 설명된 대로Linux 입력 장치의 액세스 키
전원 키(키코드 116)를 기다린 다음 스크립트를 실행하기 위해 연결된 질문에 예제 프로그램의 수정된 버전을 만들었습니다.