Come impedire al Mac di dormire dalla riga di comando?

10

Ho uno script di lunga esecuzione sul computer remoto.

Non voglio terminare la mia sessione ssh, e ho bisogno di inserirla in uno script di shell.

Come è possibile evitare che il mio Mac cada nella modalità di sospensione dalla riga di comando?

    
posta kobame 30.08.2012 - 22:44
fonte

6 risposte

18

In Mountain Lion puoi utilizzare il comando caffeinate .

caffeinate -u -t 1000

preverrà il riposo inattivo per 1000 secondi.

    
risposta data 30.08.2012 - 22:46
fonte
11

La soluzione a questo problema è non mantenere sveglio il client (il tuo Mac). Usare approcci come questo è inderogabile. Cosa succede se la connessione di rete viene persa? Anche se il tuo Mac è sveglio, lo script si fermerà.

Utilizza nohup

Se il tuo script di lunga durata è chiamato eternity.sh , prova quanto segue:

nohup /path/to/eternity.sh > /path/to/output.out &

Ora puoi anche chiudere la connessione e lo script continuerà a essere in esecuzione . & descrive il processo in modo da poter mantenere la connessione aperta e immettere comandi. Visualizza qualsiasi output dal tuo script tramite:

tail -f /path/to/output.out

I percorsi negli esempi sono opzionali se lo script è sul tuo percorso e vuoi che l'output dello script sia scritto su output.out nella directory corrente.

Gestisco script che vengono eseguiti per giorni alla volta. Script come questi dovrebbero essere staccati dal terminale. Fortunatamente, nohup fornisce un'invocazione di comando facile da ricordare per ottenere questo risultato - pensa no hangup .

    
risposta data 31.08.2012 - 01:40
fonte
7

Un'altra opzione è pmset . Utilizza il comando pmset noidle per impedire il sonno finché pmset è in esecuzione. Sfortunatamente, richiede una finestra Terminale separata con pmset in esecuzione al suo interno. Tuttavia, l'altra opzione, caffeinate , ti consente solo di impostare un certo tempo . Quindi si tratta di scegliere se si desidera aprire una seconda sessione SSH o gestire un limite di tempo.

Modifica: in base a commento di binarybob , puoi effettivamente eseguirlo in background in questo modo: pmset noidle & Per tornare a pmset tipo fg .

    
risposta data 30.08.2012 - 23:52
fonte
6
caffeinate -i -s /bin/ssh ...

Spiegazione:

-i - Impedisci il riposo inattivo.

-s - Previene la sospensione del sistema (interamente, anche se chiudi il coperchio). Nota: funziona solo con alimentazione CA.

/bin/ssh - Continua a scrivere il comando che vuoi eseguire. Anche l'utilizzo di ssh direttamente anziché /bin/ssh dovrebbe funzionare.

Risultati: il tuo sistema non dormirà fintanto che il comando ssh è in esecuzione.

    
risposta data 31.08.2012 - 00:06
fonte
1

Se stai cercando l'opzione nucleare come lo ero io:

sudo systemsetup -setcomputersleep Never

- Imposta o disattiva la sospensione a causa di inattività del sistema Mac dalla riga di comando in OS X

    
risposta data 24.06.2015 - 23:51
fonte
-3

Lo screensaver di StarMessage ( link ) ha anche la possibilità di mantenere il MAC sveglio per 2 ore, 8 ore o permanenti. Questo modo di disabilitare il sonno MAC è molto più semplice della caffeina.

    
risposta data 28.02.2016 - 14:02
fonte

Leggi altre domande sui tag