3 votos

Detener automáticamente un terminal script al bloquear el MacBook Pro

He escrito un bash script que inicio manualmente al iniciar la sesión en el portátil, pero quiero que deje de ejecutarse cuando cierre el portátil.

Esto no parece un escenario muy estándar, pero no quiero detener siempre manualmente el bash script cuando voy al baño y bloqueo mi MacBook.

3voto

Neil Puntos 49

Podrías modificar tu script con un bucle while, que compruebe si has bloqueado la pantalla o no.

Aquí es un enfoque de Python, que comprueba si hay una sesión activa.

Y aquí es una forma de implementar esta parte de Python en un script.

La respuesta en el primer enlace también proporciona una implementación de Shell, que podría funcionar para usted también, pero no estaba seguro, así que te di otro enlace.

Actualización :
Como quería resolver el problema, esto es lo que se me ocurrió:

#!/bin/bash
loop=$(python -c 'import sys,Quartz; d=Quartz.CGSessionCopyCurrentDictionary(); print d' | grep "CGSSessionScreenIsLocked = 1")
while [ "$loop" = "" ]; do
    echo "not locked"
    loop=$(python -c 'import sys,Quartz; d=Quartz.CGSessionCopyCurrentDictionary(); print d' | grep "CGSSessionScreenIsLocked = 1")
done
echo "locked"

Sin embargo, si tu script es una tarea gigante, entonces el bucle while no te ayudará.

En general, creo que es bastante difícil activar algo en el bloqueo del sistema. Probablemente necesites alguna aplicación de ayuda que vigile el proceso y lo detenga cuando bloquees la pantalla.

Llevando esto un paso más allá : Podrías escribir un pequeño programa/script que pueda comprobar si tu script se está ejecutando y pausarlo, y cuando vuelvas a tu escritorio y desbloquees la pantalla, continúe.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X