mac pro andando a dormire su nohup

3

Ho il seguente scenario. Ho degli script di shell che voglio eseguire in remoto sul mio Mac Pro, quindi mi ssh in, li avvio con nohup e logout. L'ho fatto per anni su macchine basate su Linux, e ho appena iniziato a provarlo sul nuovo Mac Pro. Tuttavia, trovo che il Mac va a dormire mentre questi sono in esecuzione, e ci vuole molto più tempo per finire. Ovviamente posso disabilitare il sonno nelle preferenze energetiche, ma ci sono sicuramente dei momenti in cui voglio che lo spegni. C'è qualcosa che potrei fare, in termini di un argomento della riga di comando, che disabiliterebbe il sonno mentre il processo era in esecuzione?

    
posta user2379888 29.05.2014 - 05:56
fonte

3 risposte

3

caffeinate i tuoi script

Utilizza il comando caffeinate incorporato in OS X per impedire al tuo Mac di andare a dormire. caffeinate è il metodo consigliato per inserire una restrizione temporanea contro il tuo Mac che entra in uno stato di bassa potenza.

caffeinate creates assertions to alter system sleep behavior. If no assertion flags are specified, caffeinate creates an assertion to prevent idle sleep. If a utility is specified, caffeinate creates the assertions on the utility’s behalf, and those assertions will persist for the duration of the utility’s execution. Otherwise, caffeinate creates the assertions directly, and those assertions will persist until caffeinate exits.

    
risposta data 29.05.2014 - 18:58
fonte
2

Puoi utilizzare pmset per impedire temporaneamente al Mac di andare in stop.

pmset noidle & PMSETPID=${!};sleep 10; kill $PMSETPID

Sostituisci sleep 10 con il tuo comando.

Puoi anche scrivere una funzione e salvarla su .bash_profile .

insomnia() {
    pmset noidle &
    PMSETPID=$!
    $($@)
    kill $PMSETPID
}

e usalo in questo modo: $ insomnia sleep 10

Raccomando di utilizzare screen anziché nohup .

Modifica: sui nuovi Mac dovresti usare caffeinate come descritto da Graham Miln. pmset noidle funziona ancora, ma dal 10.9 è contrassegnato come "deprecato" nella documentazione.

    
risposta data 29.05.2014 - 18:32
fonte
0

Ho creato una funzione all'interno del mio ~ / .bash_profile , in questo modo:

# ~/.bash_profile

# wrap ssh so computer doesn't go to sleep
ssh()
{
    echo "caffeinating ssh session..."
    LC_CTYPE= # fix issue with UTF8 on server
    caffeinate -i ssh "$@"
}

Ora, quando uso il mio "comune", il comando ssh viene incapsulato in caffeinate e quindi impedisce al sistema di andare a dormire.

Ora quando inizio una sessione ssh, posso vedere pmset -g che mi dice:

sleep                10 (sleep prevented by caffeinate)
    
risposta data 01.07.2014 - 09:47
fonte

Leggi altre domande sui tag