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.