Detener automáticamente una secuencia de commands de terminal al bloquear MacBook Pro

He escrito una secuencia de commands bash que inicio manualmente cuando inicio session en la computadora portátil, pero quiero que deje de funcionar cuando locking mi computadora portátil.

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

  • ¿Hibernatemode 25 está roto en macOS High Sierra y se puede reparar?
  • ¿Cómo puedo configurar la pantalla externa como principal y apagar la pantalla interna sin el cable de alimentación MagSafe conectado?
  • ¿Cómo puedo instalar la última actualización de firmware EFI de El Capitan?
  • ¿Funcionará la barra táctil MBP 2017 de 15 "con un Dell U3417W?
  • Macbook Air (Oct 2010) ¿Portátil de desarrollo de Photoshop & Web?
  • ¿Cuál es la causa de los pánicos de GPU en macbook pro a mediados de 2010?
  • ¿Por qué los files css se están abriendo en Safari de forma pnetworkingeterminada en MacBook?
  • ¿Puedo arrancar Linux (¿alguna distribución?) Desde USB en una MacBook Air que no tiene disco duro?
  • Thunderbolt dock statation power cargando
  • ¿Cómo edito atajos de keyboard en Nano?
  • No tiene opciones de visualización en el buscador
  • Mac no mostrará la pantalla
  • One Solution collect form web for “Detener automáticamente una secuencia de commands de terminal al bloquear MacBook Pro”

    Puede modificar su secuencia de commands con un ciclo while, que testing si ha bloqueado la pantalla o no.

    Aquí hay un enfoque de Python, que busca una session activa.

    Y aquí hay una forma de implementar esta parte de python en un script bash.

    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 le 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 su script es una tarea gigante, entonces el ciclo while no lo ayudará.

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

    Llevando esto un paso más allá: podría escribir un pequeño progtwig / script que pueda verificar si el script se está ejecutando y pausarlo, y cuando esté de vuelta en su escritorio y desbloquee la pantalla, continuará.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).