Empêcher un Mac de s'endormir pendant une longue commande Terminal

La réponse rapide : préfixez votre commande par caffeinate -i votre-commande, ou lidrun -- votre-commande, et le Mac reste éveillé jusqu'à la fin de l'exécution, sans surveillance nécessaire. Ce que la plupart des guides omettent, c'est que fermer le capot repose sur un mécanisme totalement différent — ni caffeinate ni une simple assertion keep-awake ne peuvent l'empêcher. C'est exactement ce détail qui piège ceux qui lancent de longues tâches sans surveiller le Mac.
Pourquoi les longues commandes s'interrompent
Une commande lancée dans Terminal est un processus normal, soumis à l'état d'alimentation du Mac. Si vous vous absentez assez longtemps pour atteindre le minuteur d'inactivité, ou si vous fermez le capot, le Mac s'endort et suspend la commande en plein milieu de son exécution.
Les longs transferts rsync, les builds, les téléchargements de modèles et les scripts par lots sont ceux qui dépassent le plus souvent le minuteur d'inactivité — et ce sont justement ceux que vous avez le moins envie de relancer. La tâche n'a pas échoué : c'est le Mac qui s'est arrêté sous elle.
Il existe un second cas de figure, lié au premier, qu'il vaut mieux poser d'emblée : si vous êtes connecté en SSH à un Mac pour y lancer une tâche à distance, cette machine a ses propres minuteurs de veille par inactivité et de fermeture du capot, totalement indépendants de votre connexion SSH. Un outil keep-awake doit tourner sur la machine qui exécute le travail, pas sur celle depuis laquelle vous tapez.
caffeinate et ses options
macOS intègre caffeinate précisément pour ce cas d'usage, et pour une seule tâche au premier plan, c'est le bon outil — rien à installer, rien à payer. La combinaison d'options détermine ce qu'il maintient réellement actif :


caffeinate -i votre-commande — bloque la veille par inactivité tant que votre-commande s'exécute, puis se termine et libère l'assertion automatiquement. C'est celle que la plupart des gens veulent pour une tâche Terminal.
caffeinate -d votre-commande — garde aussi l'écran allumé, utile si vous voulez jeter un œil de temps en temps à la sortie qui défile sans que l'écran ne s'assombrisse.
caffeinate -s votre-commande — bloque la veille système, mais seulement quand le Mac est branché sur secteur. Sur batterie, -s ne fait silencieusement rien, ce qui surprend souvent ceux qui pensaient que le comportement serait identique une fois débranché.
caffeinate -w <pid> — n'encapsule aucune commande ; il attend un processus déjà en cours d'exécution. Pratique pour une tâche lancée en arrière-plan : long_job & caffeinate -w $!.
caffeinate -t 3600 — maintient l'assertion pendant un nombre de secondes fixe plutôt que de la lier à un processus, utile pour une fenêtre de temps donnée plutôt que pour une commande précise.
Guide associéEmpêcher la veille du Mac pendant un build DockerOù s'arrête caffeinate, et pourquoi le capot est un problème à part
Ce que caffeinate ne fait pas, c'est surveiller la batterie ou la chaleur. Chacune de ces options maintiendra sans problème un ordinateur portable éveillé jusqu'à épuisement de la batterie sur une tâche que vous n'êtes pas là pour surveiller, et aucune ne lit l'état thermique du Mac lors d'une longue compilation qui chauffe.


Le capot, lui, pose un problème d'un tout autre ordre. Les assertions de caffeinate, tout comme l'appel IOPMAssertionCreateWithName utilisé par la CLI de LidRun elle-même, ne bloquent que la veille *par inactivité*. Fermer le capot déclenche une veille clamshell distincte, à un niveau plus bas, qu'aucune assertion de veille par inactivité ne peut arrêter — le système endort la machine quoi qu'il arrive. Le seul levier public qui garde un Mac éveillé capot fermé sur batterie est pmset -a disablesleep 1, un réglage système global, réservé aux comptes administrateur ; avec un écran externe connecté et actif, macOS reste aussi éveillé via le mode clamshell natif, sans outil tiers nécessaire. Si fermer le capot est votre vrai scénario plutôt que de rester à votre bureau, notre guide sur le mode capot fermé couvre ce mécanisme et ses compromis en détail — cet article, lui, reste centré sur le cas de la commande Terminal.
Exécuter de longues tâches en SSH
Quand la commande tourne sur un Mac distant, deux horloges comptent, et elles sont indépendantes l'une de l'autre. La première, c'est le minuteur de veille par inactivité propre à ce Mac ; la seconde, c'est la capacité de votre session SSH à survivre à un accroc réseau ou à la fermeture de votre terminal local.
Pour la première, lancez caffeinate -i ou lidrun -- sur le Mac distant lui-même, pas sur votre machine locale — une assertion keep-awake ne protège que la machine sur laquelle elle tourne.
Pour la seconde, encapsulez la commande distante dans nohup, screen ou tmux avant de vous déconnecter. Sans l'un de ces trois, fermer votre terminal local (ou perdre la connexion) peut envoyer un SIGHUP au shell distant et tuer la tâche, même si le Mac, lui, ne s'est jamais endormi.
Une manière plus sûre d'encapsuler une commande
La CLI de LidRun reprend le même principe de commande unique et ajoute les garde-fous que caffeinate n'a pas : lidrun -- votre-commande maintient une assertion keep-awake de courte durée pour cette seule exécution et la libère dès que la commande se termine, sans licence ni configuration requise — c'est gratuit et illimité, exactement comme caffeinate.
Tant que cette assertion est active, le seuil de batterie et la libération thermique automatique de l'application s'appliquent quand même si LidRun tourne : le keep-awake s'arrête automatiquement à un seuil de batterie que vous définissez (20 % par défaut, réglable entre 15 et 50 %), et il existe un plancher d'urgence fixe à 4 % qui se déclenche toujours, quel que soit votre réglage, parce que macOS a besoin de cette marge pour terminer sa mise en veille proprement. Si l'état thermique du Mac atteint un niveau critique, la retenue se libère aussi d'elle-même par défaut — la promesse honnête de LidRun tient en une phrase : agent ou tâche en cours, on reste éveillé ; tâche terminée ou Mac en danger, on libère et on laisse dormir.
Il existe aussi une version graphique de tout ça dans l'application — un panneau Run & Watch qui lance une commande, garde le Mac éveillé pendant son exécution et affiche la sortie en direct sans que vous ayez à toucher à Terminal — mais ce panneau est une fonctionnalité Pro. L'encapsulation CLI toute simple lidrun -- <command>, elle, n'est soumise à aucune restriction : elle fait partie du niveau gratuit de LidRun.
Une configuration concrète
Commande ponctuelle, à votre bureau : préfixez-la et partez tranquille — lidrun -- votre-longue-commande comme caffeinate -i votre-longue-commande fonctionnent tous les deux, et l'assertion se libère dès que la commande se termine. Aucun des deux n'a besoin d'autre configuration.
Session plus longue et sans surveillance, capot toujours ouvert : branchez le Mac si possible, lancez la commande, et si vous voulez que les garde-fous batterie/thermiques de LidRun surveillent toute la session plutôt qu'un seul processus, activez d'abord le bouton Keep Awake dans la barre de menus, puis lancez votre commande normalement. Réglez un minuteur de session (le sélecteur propose de 30 minutes à 8 heures) pour qu'un script bloqué ne garde pas le Mac éveillé indéfiniment — une tâche plantée est justement le cas où un keep-awake sans surveillance ne doit pas tourner à l'infini.
Session capot fermé : ce cas précis exige le mode Closed-Lid, pas un simple keep-awake — reportez-vous au guide dédié cité plus haut, car les règles de sécurité changent (la chaleur n'a nulle part où s'évacuer une fois le capot fermé).
Quelle que soit la configuration choisie, posez le Mac sur une surface dure et ventilée pour les tâches lourdes. Un long build, une compression ou un transfert peuvent faire chauffer la machine, et la circulation de l'air est la seule chose qu'aucun réglage logiciel ne peut compenser.
LidRun garde votre travail actif capot fermé, avec une protection batterie et thermique intégrée.
Vous avez déjà LidRun ? Lisez le guide d'installation →
Nouveau sur LidRun ? Voir les tarifs →
Questions fréquentes
Pour une tâche sur un Mac branché que vous allez surveiller, oui — caffeinate -i votre-commande est fiable et gratuit. Pour une longue tâche sans surveillance, surtout sur batterie, il n'a aucune conscience de la batterie ni de la température : il maintiendra le Mac éveillé jusqu'à un arrêt pour batterie faible, ou pendant une tâche qui chauffe et fait throttler le processeur.
-i bloque la veille par inactivité pour la commande encapsulée (celle dont la plupart des tâches Terminal ont besoin), -d garde en plus l'écran allumé, -s bloque la veille système mais seulement sur secteur (sans effet sur batterie), et -w <pid> attend un processus déjà en cours plutôt que d'en encapsuler un nouveau.
Oui. caffeinate -i votre-commande comme lidrun -- votre-commande maintiennent tous les deux une assertion de veille par inactivité pendant la durée de ce seul processus, et la libèrent automatiquement quand la commande se termine. L'encapsulation CLI lidrun est gratuite et illimitée, aucune licence n'est nécessaire.
caffeinate et une simple assertion keep-awake ne bloquent que la veille par inactivité. Fermer le capot déclenche une veille clamshell distincte, que les assertions de veille par inactivité ne peuvent pas arrêter — pour rester éveillé capot fermé, le Mac a besoin soit d'un écran externe actif, soit du réglage pmset -a disablesleep 1 réservé aux comptes administrateur (c'est ce qu'utilise le mode Closed-Lid de LidRun).
Si vous utilisez le mode Keep Awake de LidRun avec un minuteur de session réglé, ce minuteur plafonne la durée — de 30 minutes à 8 heures — pour qu'une commande bloquée ne garde pas le Mac éveillé indéfiniment. Une simple encapsulation caffeinate -i n'a pas ce plafond : elle tient jusqu'à ce que le processus se termine, ou que vous le tuiez vous-même.
L'outil keep-awake doit tourner sur le Mac qui exécute réellement le travail, pas sur votre machine locale — le SSH ne change rien aux minuteurs de veille propres à ce Mac. Par ailleurs, encapsulez la commande distante dans nohup, screen ou tmux pour qu'une connexion coupée ou un terminal local fermé n'envoie pas de SIGHUP qui tuerait la tâche, même si le Mac distant, lui, est resté éveillé.