systemd에서 스크립트를 실행하기 위해 전원 버튼 종료 동작을 변경하는 방법

systemd에서 스크립트를 실행하기 위해 전원 버튼 종료 동작을 변경하는 방법

시스템을 종료하는 대신 사용자 정의 스크립트를 실행하도록 debian 10 systemd에서 전원 버튼 종료 동작을 변경하는 방법은 무엇입니까?

이 문제는 acpi에서 처리되지만 /etc/acpi에서 스크립트를 편집할 수 있습니다. 지금까지 내가 찾은 유일한 제안은 다양한 전원 관련 바이너리를 내 스크립트로 대체하는 것입니다.

바이너리를 교체하지 않고 이를 수행할 수 있는 방법이 있습니까?

답변1

그것은 당신이하고 싶은 일에 달려 있습니다.

  • 특정 작업을 실행하는 동안 일시적으로 정전을 방지해야 하는 경우에만 이를 참조하십시오 systemd-inhibit. 이와 같이 잠자기, 일시 정지 등을 방지할 수도 있습니다. 또한 일시적으로(프로그램이 실행되는 동안) systemd에 전원 버튼을 무시하도록 지시하여 다른 프로그램이 해당 버튼에서 작동하도록 할 수도 있습니다.

  • 종료하기 전에 추가 코드를 실행하려는 경우 로 서비스를 시작할 수 있습니다 poweroff.target. shutdown.target및 을 고려해 볼 수도 있습니다 reboot.target. (전원 버튼의 기능을 완전히 바꾸고 싶다면 당기지 않도록 poweroff.target변경할 .)systemd-poweroff.servicesystemctl poweroffpoweroff

  • 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)를 기다린 다음 스크립트를 실행하기 위해 연결된 질문에 예제 프로그램의 수정된 버전을 만들었습니다.

관련 정보