전원 버튼을 눌렀을 때 systemd를 사용하여 스크립트를 실행할 수 있습니까?

전원 버튼을 눌렀을 때 systemd를 사용하여 스크립트를 실행할 수 있습니까?

주위를 둘러보았지만 아무것도 찾지 못했습니다. 제가 아는 한 사람들은 항상 무엇에 만족하고 있었나요?로그인 프로필제공되고 있는데 재미있는 부분은 다음과 같습니다 man logind.conf.

HandlePowerKey=, HandleSuspendKey=, HandleHibernateKey=, HandleLidSwitch=, HandleLidSwitchDocked=
       Controls how logind shall handle the system power and sleep keys and the lid switch to trigger actions such as system power-off or suspend. Can be one of "ignore", "poweroff", "reboot", "halt", "kexec", "suspend", "hibernate", "hybrid-sleep", and "lock". If "ignore", logind will never handle these keys. If
       "lock", all running sessions will be screen-locked; otherwise, the specified action will be taken in the respective event. Only input devices with the
       "power-switch" udev tag will be watched for key/lid switch events.  HandlePowerKey= defaults to "poweroff".  HandleSuspendKey= and HandleLidSwitch= default to
       "suspend".  HandleLidSwitchDocked= defaults to "ignore".  HandleHibernateKey= defaults to "hibernate". If the system is inserted in a docking station, or if
       more than one display is connected, the action specified by HandleLidSwitchDocked= occurs; otherwise the HandleLidSwitch= action occurs.

       A different application may disable logind's handling of system power and sleep keys and the lid switch by taking a low-level inhibitor lock
       ("handle-power-key", "handle-suspend-key", "handle-hibernate-key", "handle-lid-switch"). This is most commonly used by graphical desktop environments to take
        over suspend and hibernation handling, and to use their own configuration mechanisms. If a low-level inhibitor lock is taken, logind will not take any action
       when that key or switch is triggered and the Handle*= settings are irrelevant.

그런 다음 여기서 흥미로운 부분을 반복합니다.

시스템 전원 끄기 또는 일시 중단과 같은 작업을 트리거하기 위해 로그인이 시스템 전원, 절전 키 및 덮개 스위치를 처리하는 방법을 제어합니다. "무시", "전원 끄기", "다시 시작", "중지", "kexec", "일시 중지", "최대 절전 모드", "하이브리드 절전" 및 "잠금" 중 하나일 수 있습니다.

아니면 제가 잘못 생각하고 있는 건가요? 이것은 전원 버튼이 아닌 키보드 키일 뿐인가요?

어쨌든 예전에는 acpi를 사용하면 쉬웠으니 그냥 교체하세요.전원 버튼의 스크립트에는 /usr/lib/acpid/systemd와 동일한 것이 있습니까?

참고 (중요):키보드 전원 키를 눌렀을 때 systemd를 사용하여 스크립트를 실행하는 방법은 무엇입니까?실수로 중복으로 표시되었기 때문에 중복이 아닙니다.systemd에서 스크립트를 실행하기 위해 전원 버튼 종료 동작을 변경하는 방법내 질문에 대답하지 않습니다. 이는 전원 버튼이 아닌 키보드에서 전원 키를 관리하는 것이기 때문입니다.

전원 버튼

@TooTea가 제안한 것처럼 쉘에 통합된 버튼은 /dev/input/by-path/platform-i8042-serio-0-event와 같은 것이 없는지 확인한 후 키보드 버튼 누르기로 처리될 수 있습니다. kbd 파일을 사용하여 누른 키를 모니터링하면 내 질문에 확실히 대답하지 않습니다.

답변1

마침내 해결책을 찾았지만 운 좋게도 openbox를 사용하고 있습니다.

제 경우에는 LXDE에서 다음 섹션을 편집 ~/.config/openbox/lxde-rc.xml하고 <keyboard> ... </keyboard>추가합니다.

  <keybind key="XF86PowerOff">
      <action name="Execute">
        <command>command or script to run</command>
      </action>
  </keybind>

예를 들어, 테스트를 위해 "전원을 끄려면 누르세요"라는 팝업을 방금 열었습니다.

  <keybind key="XF86PowerOff">
      <action name="Execute">
        <command>zenity --info --text="Power off pressed"</command>
      </action>
  </keybind>

그런 다음 터미널 유형에서 openbox-lxde --reconfigure타워 케이스 전원 버튼을 누르면 다음 메시지가 표시됩니다.

여기에 이미지 설명을 입력하세요.

편집: 언급하는 것을 잊어버렸습니다(필수인지는 확실하지 않음). 시스템 종료 버튼을 비워 두었습니다. 이를 확인하려면 시작 메뉴 -> 시스템 -> 기본 설정 -> "전원 관리자"로 이동하여 "전원 버튼이 언제 작동하는지 확인하세요." 눌려짐"이 "아무 것도 하지 않음"으로 설정되어 있습니다.

여기에 이미지 설명을 입력하세요.

관련 정보