Tengo el siguiente escenario. Tengo scripts de shell que quiero ejecutar de forma remota en mi mac pro, así que me ssh, les lanza con nohup, y cerrar la sesión. He hecho esto durante años en linux basada en las máquinas, y acabo de empezar a probarlo en el nuevo mac pro. Sin embargo, me parece que el mac se va a dormir mientras estos se están ejecutando, y se necesita mucho más tiempo para terminar. Obviamente puedo deshabilitar el sueño en la energía de las preferencias, pero definitivamente hay veces cuando quiero dejar que se apague. Hay algo que yo pudiera hacer, en términos de un argumento de línea de comandos, que imposibilitaría el sueño mientras el proceso estaba en marcha?
Respuestas
¿Demasiados anuncios?caffeinate sus scripts
El uso de las integradas en OS X caffeinate comando para evitar que su Mac se va a dormir. caffeinate
es la forma recomendada de alojamiento temporal de restricción en contra de su Mac entrar en un estado de baja energía.
caffeinate
crea afirmaciones para modificar el sistema de conducta del sueño. Si no afirmación de los indicadores se especifican, caffeinate crea una afirmación a evitar la suspensión de inactividad. Si la utilidad se especifica, caffeinate crea el afirmaciones sobre la utilidad de la representación, y esas afirmaciones persistirá para la duración de la utilidad de la ejecución. De lo contrario, caffeinate crea las afirmaciones directamente, y esas afirmaciones persistirá hasta caffeinate salidas.
Usted puede utilizar pmset
a impedir temporalmente la mac de ir a dormir.
pmset noidle & PMSETPID=${!};sleep 10; kill $PMSETPID
Reemplace sleep 10
con su comando.
También puede escribir una función y guardar en .bash_profile
.
insomnia() {
pmset noidle &
PMSETPID=$!
$($@)
kill $PMSETPID
}
y utilizarlo como este:
$ insomnia sleep 10
Recomiendo el uso de screen
en lugar de nohup
.
Edit: en los nuevos Macs usted debe utilizar caffeinate
como se describe por Graham Miln. pmset noidle
todavía funciona, pero desde 10.9 está marcada como "obsoleta" en la documentación.
Hice una función dentro de mi ~/.bash_profile
, así:
# ~/.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 "$@"
}
Ahora cuando uso mi "común" el comando ssh es conseguir envuelto en caffeinate por lo tanto mantiene el sistema de ir a dormir.
Ahora cuando inicio una sesión de ssh, puedo ver pmset -g
me dice:
sleep 10 (sleep prevented by caffeinate)