Automatically stop a terminal script when locking MacBook Pro

Solution 1:

You could modify your script with a while loop, that tests if you have locked the screen or not.

Here is a python approach, that checks for an active session.

And here is a way on implementing this python part into a bash script.

The answer in the first link also provides a Shell implementation, that could work for you too, but I was unsure, so I gave you another link.

Update :
Because I wanted to solve the problem, here is what I came up with:

#!/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"

However, If your script is one giant task, then the while loop won't help you.

In general, I think, it is rather difficult to trigger something on system lock. You probably need some helper application that watches the process and stops it when you lock the screen.

Taking this a step further : You could write a small programm/script that can check if your script is running and pause it, and when you are back at your desk and unlock the screen, it continues.