Você está procurando sinais SIGTSTP e SIGCONT. Tente isto:
trap onsuspend TSTP
trap onresume CONT
Eu tenho um script bash (no osx) rodando continuamente, ele atualmente intercepta e manipula um final assim
trap onshutdown TERM
como posso fazer o trap também lidar com suspender / retomar como
trap onsuspend ?
trap onresume ?
Como o programa é simplesmente suspenso e não é confiável, em vez disso, eu configuro um pipe nomeado e gero um script sentinela.
Ele faria um loop a cada 5 ou 15 minutos, gravando o registro de data e hora atual no canal nomeado e depois suspenso.
Você poderia então ler daquele tubo e fazer as contas entre as leituras - se o tempo pular mais do que um ou dois pings, então você dormiu.
Dependendo de quão preciso você precisa, você pode seguir o arquivo /private/var/log/system.log (e potencialmente /private/var/log/system.0.log.gz) para o último sono / wake times registrados pelo kernel.
Vai ser mais trabalho do que depender de sinais. Você também pode fazer o auxiliar rodar e enviar o sinal que quiser para o seu script.
Seis de uma meia dúzia do outro.