Evita que la Mac se duerma durante un comando largo en Terminal

La respuesta rápida: antepón caffeinate -i tu-comando, o lidrun -- tu-comando, y la Mac se mantiene despierta hasta que termine, sin que tengas que estar pendiente. Lo que la mayoría de las guías no dice es que cerrar la tapa funciona con un mecanismo completamente distinto — ni caffeinate ni una simple keep-awake assertion pueden evitarlo, y es justo eso lo que sorprende a quienes dejan corriendo trabajos largos sin supervisión.
Por qué los comandos largos se cortan
Un comando en Terminal es un proceso normal, atado al estado de energía de la Mac. Si te alejas el tiempo suficiente como para activar el temporizador de inactividad, o cierras la tapa, la Mac se duerme y el comando queda suspendido a mitad de camino.
Las transferencias largas con rsync, los builds, las descargas de modelos y los scripts por lotes son justo los que más probablemente superen el temporizador de inactividad — y también los que menos quieres tener que repetir. El trabajo no falló: la Mac simplemente se detuvo debajo de él.
Hay un segundo modo de falla, relacionado, que vale la pena mencionar desde ya: si te conectas por SSH a una Mac para correr el trabajo de forma remota, esa máquina tiene sus propios temporizadores de inactividad y de cierre de tapa, completamente independientes de tu conexión SSH. Una herramienta keep-awake tiene que correr en la máquina que hace el trabajo, no en la que estás usando para escribir.
caffeinate y sus flags
macOS trae caffeinate justo para esto, y para un solo trabajo en primer plano es la herramienta correcta — no hay que instalar nada, no cuesta nada. La combinación de flags decide qué es lo que realmente mantiene activo:


caffeinate -i tu-comando — bloquea el sueño por inactividad mientras tu-comando esté corriendo, y luego termina y libera la assertion automáticamente. Es la que la mayoría de la gente quiere para un trabajo en Terminal.
caffeinate -d tu-comando — también mantiene la pantalla encendida, útil si quieres echar un vistazo a la salida que va corriendo sin que la pantalla se atenúe.
caffeinate -s tu-comando — bloquea el sueño del sistema, pero solo mientras la Mac está conectada a la corriente. Con batería, -s simplemente no hace nada, algo que sorprende a más de uno que asumió que se comporta igual sin cable.
caffeinate -w <pid> — no envuelve ningún comando; espera a un proceso que ya está corriendo. Útil para un trabajo que iniciaste en segundo plano: long_job & caffeinate -w $!.
caffeinate -t 3600 — mantiene la assertion durante una cantidad fija de segundos en lugar de atarla a un proceso, útil para una ventana de tiempo determinada más que para un comando específico.
Guía relacionadaEvita que tu Mac se duerma durante un build de DockerDónde se detiene caffeinate, y por qué la tapa es un problema aparte
Lo que caffeinate no hace es vigilar la batería ni el calor. Cualquiera de esos flags mantendrá la laptop despierta sin problema hasta que se agote la carga, en un trabajo que ni siquiera estás viendo, y ninguno lee el estado térmico de la Mac durante una compilación larga y caliente.


La tapa es un asunto distinto. Las assertions de caffeinate, y la misma llamada IOPMAssertionCreateWithName que usa el propio CLI de LidRun, solo bloquean el sueño *por inactividad*. Cerrar la tapa activa un sueño clamshell separado, de más bajo nivel, que ninguna assertion de inactividad puede detener — el sistema operativo duerme la máquina de todos modos. La única palanca pública que mantiene despierta a una Mac con la tapa cerrada, con batería, es pmset -a disablesleep 1, un ajuste global del sistema que requiere permisos de administrador; con un monitor externo conectado y activo, macOS también se mantiene despierto gracias al modo clamshell nativo, sin necesidad de ninguna herramienta de terceros. Si tu escenario real es cerrar la tapa y no quedarte en tu escritorio, nuestra guía de tapa cerrada cubre ese mecanismo y sus contrapartidas en detalle — este artículo se mantiene enfocado en el caso de un comando en Terminal.
Correr trabajos largos por SSH
Cuando el comando corre en una Mac remota, hay dos relojes que importan y son independientes entre sí. Uno es el propio temporizador de inactividad de esa Mac; el otro es si tu sesión SSH sobrevive a un corte de red o al cierre de tu terminal local.
Para lo primero, corre caffeinate -i o lidrun -- en la propia Mac remota, no en tu máquina local — una assertion keep-awake solo protege el equipo en el que está corriendo.
Para lo segundo, envuelve el comando remoto en nohup, screen o tmux antes de desconectarte. Sin uno de estos, cerrar tu terminal local (o perder la conexión) puede enviar SIGHUP al shell remoto y matar el trabajo aunque la Mac nunca se haya dormido.
Una forma más segura de envolver un comando
El CLI de LidRun sigue el mismo patrón de un solo comando y le suma las protecciones que caffeinate se salta: lidrun -- tu-comando mantiene una assertion keep-awake de corta duración para esa única ejecución, y la libera en el momento en que el comando termina, sin necesidad de licencia ni configuración — es gratis e ilimitado, igual que caffeinate.
Mientras esa assertion está activa, el piso de batería y la liberación térmica automática de la app siguen aplicando si LidRun está corriendo: keep-awake se detiene solo al llegar a un umbral de batería que tú defines (20% por defecto, ajustable entre 15% y 50%), y hay un piso de emergencia fijo en 4% que siempre se activa sin importar tu configuración, porque macOS necesita ese margen para terminar de dormirse de forma limpia. Si el estado térmico de la Mac llega a crítico, la retención también se libera sola por defecto — la promesa honesta de LidRun es: si hay un agente o un trabajo corriendo, se mantiene despierta; si el trabajo terminó o la Mac no está segura, se libera y se deja dormir.
También existe una versión con interfaz gráfica dentro de la app — un panel Run & Watch que inicia un comando, mantiene la Mac despierta mientras corre y muestra la salida en vivo sin que tengas que tocar Terminal — pero ese panel es una función Pro. El simple wrapper de CLI lidrun -- <comando> no tiene ninguna restricción; forma parte del nivel gratuito de LidRun.
Una configuración práctica
Comando puntual, en tu escritorio: antepónlo y aléjate — tanto lidrun -- tu-comando-largo como caffeinate -i tu-comando-largo funcionan, y la assertion se libera en el instante en que el comando termina. Ninguno de los dos necesita ninguna otra configuración.
Sesión más larga sin supervisión, con la tapa abierta: conéctate a la corriente si puedes, inicia el comando, y si quieres que las protecciones de batería y térmicas de LidRun vigilen toda la sesión y no solo un proceso, activa primero el interruptor Keep Awake en la barra de menú y luego corre tu comando con normalidad. Configura un temporizador de sesión (el selector ofrece desde 30 minutos hasta 8 horas) para que un script que se cuelga no mantenga la Mac despierta indefinidamente — un trabajo colgado es exactamente el caso para el que un keep-awake sin supervisión no debería correr para siempre.
Sesión con la tapa cerrada: esto necesita específicamente el modo Closed-Lid, no un keep-awake simple — revisa la guía dedicada enlazada más arriba, ya que cambia por completo el cálculo de seguridad (el calor no tiene adónde escapar con la tapa cerrada).
Sea cual sea la configuración, mantén la Mac sobre una superficie dura y ventilada para los trabajos pesados. Un build, una compresión o una transferencia largos pueden calentar el equipo, y el flujo de aire es lo único que ningún ajuste de software puede solucionar.
LidRun mantiene tu trabajo en marcha con la tapa cerrada, con protección de batería y temperatura integrada.
¿Ya tienes LidRun? Lee la guía de configuración →
¿Nuevo en LidRun? Consulta los precios →
Preguntas frecuentes
Para un trabajo en una Mac conectada a la corriente que vas a estar revisando, sí — caffeinate -i tu-comando es confiable y gratis. Para un trabajo largo sin supervisión, sobre todo con batería, no tiene ninguna conciencia de batería ni de temperatura, así que mantendrá la Mac despierta hasta un apagado por batería baja o durante un trabajo caliente que empieza a hacer throttling.
-i bloquea el sueño por inactividad para el comando envuelto (el que necesita la mayoría de los trabajos en Terminal), -d además mantiene la pantalla encendida, -s bloquea el sueño del sistema pero solo con corriente conectada (no hace nada con batería), y -w <pid> espera a un proceso que ya está corriendo en lugar de envolver uno nuevo.
Sí. Tanto caffeinate -i tu-comando como lidrun -- tu-comando mantienen una assertion de sueño por inactividad durante la duración de ese proceso único y la liberan automáticamente cuando el comando termina. El wrapper de CLI lidrun es gratis e ilimitado, no necesita licencia.
caffeinate y una assertion keep-awake simple solo bloquean el sueño por inactividad. Cerrar la tapa activa un sueño clamshell separado que las assertions de inactividad no pueden detener — la Mac necesita un monitor externo activo, o el ajuste pmset -a disablesleep 1 que requiere permisos de administrador (lo que usa el modo Closed-Lid de LidRun), para mantenerse despierta con la tapa cerrada.
Si estás usando el modo Keep Awake de LidRun con un temporizador de sesión configurado, ese temporizador limita la ejecución — de 30 minutos hasta 8 horas — para que un comando colgado no mantenga la Mac despierta indefinidamente. Un simple caffeinate -i no tiene ese límite; se mantiene hasta que el proceso termina o tú lo matas manualmente.
La herramienta keep-awake tiene que correr en la Mac que hace el trabajo, no en tu máquina local — SSH no cambia los temporizadores de sueño propios de esa Mac. Por separado, envuelve el comando remoto en nohup, screen o tmux para que una conexión caída o el cierre de tu terminal local no envíen SIGHUP y maten el trabajo, aunque la Mac remota se haya mantenido despierta.