Interrompe automaticamente uno script del terminale quando si blocca MacBook Pro

3

Ho scritto uno script bash che avvio manualmente quando accedo al computer portatile, ma voglio che smetta di funzionare quando blocco il mio laptop.

Questo non sembra uno scenario molto standard, ma non voglio interrompere sempre manualmente lo script bash quando vado in bagno e chiudo il mio MacBook.

    
posta ujjain 02.07.2014 - 12:30
fonte

1 risposta

3

Potresti modificare il tuo script con un ciclo while, che verifica se hai bloccato lo schermo o meno.

Qui è un approccio python, che verifica la presenza di sessione.

E qui è un modo per implementare questa parte python in una bash script.

La risposta nel primo link fornisce anche un'implementazione della shell, che potrebbe funzionare anche per te, ma non ero sicuro, quindi ti ho dato un altro link.

Aggiornamento :
Perché volevo risolvere il problema, ecco cosa mi è venuto in mente:

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

Tuttavia, se lo script è un'attività gigantesca, il ciclo while non ti aiuterà.

In generale, penso, è piuttosto difficile attivare qualcosa sul blocco del sistema. Probabilmente hai bisogno di un'applicazione di supporto che controlli il processo e lo interrompa quando blocchi lo schermo.

Fare un ulteriore passo avanti: potresti scrivere un piccolo programma / script in grado di controllare se il tuo script è in esecuzione e metterlo in pausa, e quando torni alla scrivania e sblocchi lo schermo, continua.

    
risposta data 02.07.2014 - 13:16
fonte

Leggi altre domande sui tag