Ejecutar script cuando se presiona el botón de encendido

Ejecutar script cuando se presiona el botón de encendido

Cuando presiono el botón de encendido, quiero ejecutar un script. Por el bien de este escenario, digamos file.sh. Entonces, cuando presiono el botón de encendido, quiero ejecutar file.sh y solo file.sh.

La mayoría de las soluciones que encontré implicaron la edición /etc/acpi/powerbtn.sh, pero ese archivo no existe en mi sistema. (Estoy ejecutando Ubuntu 19.04) Intenté crearlo y completarlo con el contenido estándar, pero no funcionó. También intenté escuchar las pulsaciones de teclas con acpi_listen, pero no pasó nada cuando presioné las teclas, así que no sé si lo hice mal o qué. Intenté usar xev, que detectó eventos clave pero no se registró nada cuando presioné el botón de encendido.

¿Alguien sabe cómo lograr esto o qué estoy haciendo mal?

PD: Debo mencionar que preferiría una solución que se pueda realizar en la línea de comandos, idealmente una sin software de terceros. Gracias.


Pregunta similar, pero sin soluciones:

https://askubuntu.com/questions/473693/ejecutar-un-script-cuando-se-pulsa-el-botón-de-encendido

Básicamente buscando el equivalente en Linux de lo que hicieron aquí:

https://stackoverflow.com/questions/12434863/ejecutando-un-batch-script-on-windows-shutdown


EDITAR: esto es lo que obtengo de syslog:

Feb 9 13:01:01 joe-Aspire-E5-576G gnome-session-binary[1624]: Entering running state

Y este es mi archivo en eventos:

event=button/power action=/home/ragnvaldr/Desktop/test/sc.sh `

Respuesta1

Tu pregunta está respondida en elEJEMPLOSección de man acpid. Me adaptaré a tus necesidades.

  • Como rootcrear un archivo llamado /etc/acpi/events/powercon contenidos como este:
event=button/power
action=/usr/bin/logger "ACPI_POWER_BTTN_TEST: %e"
  • Entonces corre service acpid restart.

  • Sigue el syslogarchivo así/usr/bin/tail -f /var/log/syslog

  • Presione el botón de encendido para ver su mensaje de prueba en formato syslog.

  • Cambie la action=línea en el powerarchivo de manera adecuada para que apunte a su secuencia de comandos personalizada.

Solución de problemas:

  1. Después de reiniciar acpid, verifique que acpidrealmente se esté ejecutando usando el pidof acpidcomando.

  2. ¿Su guión funciona como se esperaba? Utilice nombres de ruta completos para los comandos en su secuencia de comandos. Hacernoasumir cualquier valor para PATH.

  3. En el ejemplo anterior utilicé el /usr/bin/loggercomando como una manera fácil de registrar algo en algún lugar ( /var/log/syslog). Alternativamente, puede escribir algo en un archivo /tmpcon fines de prueba.

  4. Se ha informado (por @nathan) que algunos administradores de ventanas también pueden capturar el botón de encendido. Puede ser útil asegurarse de que /etc/systemd/logind.conftenga la línea HandlePowerKey=ignore, de modo que systemd-logind.servicese ignore el botón de encendido.

Respuesta2

Básicamente buscando el equivalente en Linux de lo que hicieron aquí:https://stackoverflow.com/questions/12434863/ejecutando-un-batch-script-on-windows-shutdown

Si esto es lo que desea hacer, puede ejecutar scripts cuando el sistema se apague (o se hiberne o se ponga en suspensión) usando elsystemdinfraestructura.

información relacionada