
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
root
crear un archivo llamado/etc/acpi/events/power
con contenidos como este:
event=button/power
action=/usr/bin/logger "ACPI_POWER_BTTN_TEST: %e"
Entonces corre
service acpid restart
.Sigue el
syslog
archivo 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 elpower
archivo de manera adecuada para que apunte a su secuencia de comandos personalizada.
Solución de problemas:
Después de reiniciar
acpid
, verifique queacpid
realmente se esté ejecutando usando elpidof acpid
comando.¿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
.En el ejemplo anterior utilicé el
/usr/bin/logger
comando como una manera fácil de registrar algo en algún lugar (/var/log/syslog
). Alternativamente, puede escribir algo en un archivo/tmp
con fines de prueba.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.conf
tenga la líneaHandlePowerKey=ignore
, de modo quesystemd-logind.service
se 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 elsystemd
infraestructura.