Puedes modificar tu script con un bucle while, que prueba si has bloqueado la pantalla o no.
Aquí es un enfoque de Python, que verifica si hay un activo sesión.
Y aquí es una forma de implementar esta parte de python en una fiesta. script.
La respuesta en el primer enlace también proporciona una implementación de Shell, que también podría funcionar para usted, pero no estaba seguro, por lo que le di otro enlace.
Actualizar :
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 necesite alguna aplicación auxiliar que observe el proceso y lo detenga cuando bloquee la pantalla.
Llevando esto un paso más allá: podría escribir un pequeño programa / script que pueda verificar si su secuencia de comandos se está ejecutando y pausar, y cuando vuelva a su escritorio y desbloquee la pantalla, continúa.