Tengo un script de larga ejecución en la computadora remota.
No quiero terminar mi sesión ssh, y necesito ingresarla en un script de shell.
¿Cómo es posible evitar que mi Mac caiga en suspensión desde la línea de comandos?
Tengo un script de larga ejecución en la computadora remota.
No quiero terminar mi sesión ssh, y necesito ingresarla en un script de shell.
¿Cómo es posible evitar que mi Mac caiga en suspensión desde la línea de comandos?
En Mountain Lion puedes usar el comando caffeinate
.
caffeinate -u -t 1000
evitará el sueño inactivo durante 1000 segundos.
La solución a este problema es no mantener al cliente (su Mac) despierto. El uso de enfoques como este no es confiable. ¿Qué pasa si se pierde la conexión de red? Incluso si tu Mac está despierta, el script se detendrá.
Usa nohup
Si su secuencia de comandos de larga duración se llama eternity.sh
, intente lo siguiente:
nohup /path/to/eternity.sh > /path/to/output.out &
Ahora incluso puedes cerrar la conexión y tu script continuará ejecutándose . El &
pone en proceso el proceso para que pueda mantener la conexión abierta e ingresar comandos. Ver cualquier salida de su script a través de:
tail -f /path/to/output.out
Las rutas en los ejemplos son opcionales si el script está en su ruta y desea que la salida del script se escriba en output.out
en el directorio actual.
Administro los scripts que se ejecutan durante días a la vez. Scripts como estos deben ser separados de la terminal. Afortunadamente, nohup
proporciona una invocación de comandos fácil de recordar para lograr esto: piense en no hangup .
Otra opción es pmset . Use el comando pmset noidle
para evitar la suspensión mientras se esté ejecutando pmset
. Desafortunadamente, requiere una ventana de Terminal separada con pmset
ejecutándose en ella. Sin embargo, la otra opción, caffeinate
, solo le permite establecer un cierto tiempo . Entonces, es cuestión de elegir si desea abrir una segunda sesión de SSH o lidiar con una restricción de tiempo.
Editar: según comentario de binarybob , puedes ejecutarlo en el fondo de esta manera: pmset noidle &
Para volver a pmset
type fg
.
caffeinate -i -s /bin/ssh ...
Explicación:
-i
- Prevenir el sueño inactivo.
-s
- Evita la suspensión del sistema (completamente, incluso si cierra la tapa). Nota: solo funciona con la alimentación de CA.
/bin/ssh
- Solo sigue escribiendo el comando que quieres ejecutar. El uso de ssh
directamente en lugar de /bin/ssh
también debería funcionar.
Resultados: su sistema no se suspenderá mientras se ejecute el comando ssh
.
Si estás buscando la opción nuclear como lo estaba yo:
sudo systemsetup -setcomputersleep Never
El protector de pantalla de StarMessage ( enlace ) también tiene la opción de mantener el MAC activo durante 2 horas, 8 horas o permanentemente. Esta forma de desactivar el sueño MAC es mucho más fácil que la cafeína.
Lea otras preguntas en las etiquetas sleep-wake command-line