Blog technologiczny od 2014 · 1 114 wpisów
RSS

Caffeinate na macOS – jak nie dopuścić do uśpienia Maca (flagi i przykłady)

caffeinate to wbudowana w macOS komenda, która nie pozwala Macowi zasnąć, dopóki działa wskazany program albo przez zadany czas. Wystarczy wpisać w Terminalu caffeinate -i claude (albo dowolną inną długą komendę), żeby komputer nie poszedł spać w połowie pracy. Poniżej wszystkie flagi, przykłady i to, czego caffeinate nie potrafi.

Uruchamiasz długą sesję w Claude Code, odchodzisz od komputera i po godzinie odkrywasz, że Mac przeszedł w stan uśpienia, a proces został zatrzymany? To częsty problem podczas generowania kodu, analizowania projektu czy wykonywania długich komend w terminalu. Na szczęście macOS ma na to proste narzędzie, bez grzebania w ustawieniach zasilania.

W skrócie
  • caffeinate -i polecenie — Mac nie zaśnie, dopóki polecenie działa.
  • caffeinate -di polecenie — dodatkowo ekran się nie wygasi.
  • caffeinate -i -t 3600 — blokada na godzinę, bez żadnego programu.
  • caffeinate -i -w PID — blokada do końca już działającego procesu.
  • Wyłączasz przez Ctrl+C albo killall caffeinate.
  • Zamknięcie pokrywy MacBooka i tak uśpi komputer — caffeinate tego nie blokuje.

Czym jest caffeinate?

caffeinate to narzędzie wbudowane w macOS (jest w systemie od OS X 10.8, nie trzeba niczego instalować ani pobierać przez Homebrew). Tworzy tymczasowe blokady uśpienia systemu (Power Management Assertions). Zamiast na stałe zmieniać ustawienia zasilania, informuje system, że aktualnie wykonywane zadanie nie powinno zostać przerwane przez automatyczne usypianie komputera.

Po zakończeniu działania caffeinate wszystkie blokady są automatycznie usuwane, a macOS wraca do standardowych ustawień oszczędzania energii. Dzięki temu nie trzeba pamiętać o ponownym włączaniu lub wyłączaniu opcji w Ustawieniach systemowych.

Najprostsze użycie to samo słowo w Terminalu:

zsh
caffeinate

Bez żadnej flagi caffeinate blokuje uśpienie z powodu bezczynności (tak jak -i) i działa, dopóki go nie przerwiesz.

Flagi caffeinate (-d, -i, -m, -s, -u, -t, -w)

Flagi można łączyć w jedną, np. -di albo popularne -dimsu.

Flaga Co robi
-i blokuje uśpienie komputera z powodu bezczynności (najczęściej używana)
-d nie pozwala wygasić ekranu
-m blokuje uśpienie dysku
-s blokuje uśpienie systemu — działa tylko przy podłączonym zasilaczu
-u zgłasza „użytkownik jest aktywny”: włącza wygaszony ekran; bez -t trwa tylko 5 sekund
-t sekundy blokada przez podaną liczbę sekund
-w PID blokada do zakończenia procesu o danym PID

caffeinate -i — zapobiega uśpieniu komputera

To najczęściej używana flaga.

zsh
caffeinate -i claude

Komputer pozostanie aktywny, nawet jeśli przez dłuższy czas nie będziesz używać klawiatury ani myszy. Ekran może jednak zostać wygaszony zgodnie z ustawieniami systemu.

caffeinate -d — nie wygaszaj ekranu

Jeżeli chcesz obserwować, co dzieje się w terminalu, dodaj flagę -d.

zsh
caffeinate -di claude

Mac pozostanie aktywny, a ekran nie zostanie wygaszony. To dobre rozwiązanie podczas:

  • monitorowania logów,
  • obserwowania postępu pracy agenta,
  • prezentacji,
  • debugowania aplikacji.

caffeinate -s — uśpienie systemu przy zasilaczu

-s działa podobnie do -i, ale mocniej: blokuje uśpienie systemu w ogóle, nie tylko to z bezczynności. Haczyk: działa tylko przy podłączonym zasilaczu. Na baterii MacBook potraktuje tę flagę tak, jakby jej nie było.

zsh
caffeinate -s npm run build

caffeinate -t — określ czas działania

Nie zawsze chcesz uruchamiać konkretny program przez caffeinate. Możesz po prostu określić czas działania w sekundach.

zsh
caffeinate -i -t 7200

Komputer pozostanie aktywny przez dwie godziny, a następnie caffeinate zakończy działanie automatycznie. Przydatne przeliczniki: 1800 = 30 minut, 3600 = godzina, 14400 = 4 godziny.

caffeinate -w — dla procesu, który już działa

Zapomniałeś dopisać caffeinate przed długą komendą? Nie trzeba jej przerywać. Sprawdź PID procesu (np. pgrep -f "npm run build" albo w Monitorze aktywności) i w drugiej karcie Terminala wpisz:

zsh
caffeinate -i -w 12345

Blokada zniknie sama, gdy proces o numerze 12345 się zakończy.

caffeinate -dimsu — wszystko naraz

zsh
caffeinate -dimsu

Ta kombinacja często krąży w poradnikach: blokuje uśpienie ekranu, systemu i dysku oraz „budzi” ekran. W praktyce do długich zadań w terminalu wystarcza -i (albo -di, jeśli chcesz patrzeć na ekran) — -u bez -t i tak wygasa po 5 sekundach, a -s na baterii nic nie zmienia.

Caffeinate i Claude Code

Claude Code często wykonuje zadania trwające kilkanaście minut, a czasem nawet kilka godzin. Dotyczy to między innymi:

  • refaktoryzacji dużych projektów,
  • generowania kodu,
  • analizowania repozytorium,
  • uruchamiania testów,
  • kompilacji aplikacji,
  • pracy z agentami AI wykonującymi wiele kroków.

Tryb automode robi robotę :).

Jeżeli komputer przejdzie w stan uśpienia, proces może zostać zatrzymany lub utracić połączenie z usługami sieciowymi. Najprostszym rozwiązaniem jest uruchomienie Claude Code przez caffeinate:

zsh
caffeinate -i claude

Od tej chwili Mac nie będzie przechodził w stan uśpienia z powodu bezczynności. Gdy zakończysz pracę w Claude Code, caffeinate również zakończy działanie i system wróci do normalnego trybu pracy.

Dzięki temu można zlecić dłuższą robotę i wyjść do kuchni na kawę czy do sklepu na szybkie zakupy. Robota będzie się robiła „sama”. Przy długich sesjach warto też pilnować kosztów — o tym, jak to robię, piszę w tekście jak zmniejszyć zużycie tokenów w Claude Code.

Żeby nie pisać tego za każdym razem, dodaj alias do ~/.zshrc:

zsh
alias cc='caffeinate -i claude'

Po ponownym otwarciu Terminala wystarczy wpisać cc.

Inne praktyczne przykłady

Budowanie projektu

zsh
caffeinate -i npm run build

Komputer pozostanie aktywny aż do zakończenia kompilacji.

Uruchamianie testów

zsh
caffeinate -i npm test

Przydatne przy długich zestawach testów integracyjnych. Trochę na siłę, ale pokazuję, że można inne komendy uruchamiać.

Kopia zapasowa na dysk zewnętrzny

zsh
caffeinate -i rsync -av ~/Projects /Volumes/Backup

Backup nie zostanie przerwany przez automatyczne uśpienie komputera.

Lokalny serwer PHP

zsh
caffeinate -i php -S localhost:8080

Serwer deweloperski działa, a Mac nie zaśnie, dopóki go nie zatrzymasz.

Pobieranie dużego pliku

zsh
caffeinate -i curl -O https://example.com/duzy-plik.iso

Jak sprawdzić, czy caffeinate działa?

macOS udostępnia narzędzie pokazujące aktywne blokady uśpienia.

zsh
pmset -g assertions

Jeżeli caffeinate działa poprawnie, zobaczysz wpis podobny do:

zsh
pmset -g assertions
2026-07-06 18:48:23 +0200
Assertion status system-wide:
   BackgroundTask                 0
   ApplePushServiceTask           0
   UserIsActive                   1
   PreventUserIdleDisplaySleep    1
   SoftwareUpdateTask             0
   PreventSystemSleep             0
   ExternalMedia                  0
   PreventUserIdleSystemSleep     1
   NetworkClientActive            0
Listed by owning process:
   pid 10150(caffeinate): [0x0004db950001a0cd] 00:03:17 PreventUserIdleSystemSleep named: "caffeinate command-line tool"
	Details: caffeinate asserting for 300 secs
	Localized=THE CAFFEINATE TOOL IS PREVENTING SLEEP.
	Timeout will fire in 102 secs Action=TimeoutActionRelease
   pid 2992(caffeinate): [0x0004d3ed00019f3e] 00:35:57 PreventUserIdleSystemSleep named: "caffeinate command-line tool"
	Details: caffeinate asserting forever
	Localized=THE CAFFEINATE TOOL IS PREVENTING SLEEP.
   pid 2992(caffeinate): [0x0004d3ed00059f3f] 00:35:57 PreventUserIdleDisplaySleep named: "caffeinate command-line tool"
	Details: caffeinate asserting forever
	Localized=THE CAFFEINATE TOOL IS PREVENTING SLEEP.
   pid 1211(sharingd): [0x0004dc240001a0e0] 00:00:54 PreventUserIdleSystemSleep named: "Handoff"
   pid 83(powerd): [0x0004cf1600019e16] 00:56:36 PreventUserIdleSystemSleep named: "Powerd - Prevent sleep while display is on"
   pid 141(WindowServer): [0x0004d92d00099fff] 00:00:00 UserIsActive named: "com.apple.iohideventsystem.queue.tickle serviceID:100000fb9 service:AppleHIDKeyboardEventDriverV2 product:Apple Internal Keyboard / Trackpad eventType:3"
	Timeout will fire in 120 secs Action=TimeoutActionRelease
No kernel assertions.

Liczy się linia PreventUserIdleSystemSleep 1 i proces caffeinate na liście. To oznacza, że system nie uśpi komputera z powodu bezczynności. Szybsza wersja, jeśli chcesz tylko sprawdzić, czy caffeinate w ogóle działa:

zsh
pmset -g assertions | grep caffeinate

Jak wyłączyć caffeinate?

  • Ctrl+C w oknie Terminala, w którym działa.
  • killall caffeinate z innego okna — kończy wszystkie uruchomione instancje.
  • Samo się wyłączy po czasie z -t, po zakończeniu procesu z -w albo programu uruchomionego przez caffeinate.

Zamknięcie okna Terminala też kończy caffeinate — warto o tym pamiętać, gdy zostawiasz komputer na noc.

Caffeinate a zamknięta klapa MacBooka

caffeinate nie zapobiega uśpieniu po zamknięciu pokrywy MacBooka — nawet z flagą -s. Jeżeli zamkniesz laptop, system przejdzie w stan uśpienia zgodnie z normalnym zachowaniem macOS. Są dwa wyjścia:

  1. Tryb z zamkniętą pokrywą (clamshell) — podłącz zasilacz i zewnętrzny monitor (oraz klawiaturę i mysz). Wtedy MacBook pracuje z zamkniętą klapą normalnie, a caffeinate działa jak zwykle.
  2. pmset disablesleep — całkowicie wyłącza usypianie, także po zamknięciu pokrywy:
    zsh
    sudo pmset -a disablesleep 1

    Po skończonej pracy koniecznie przywróć ustawienie:

    zsh
    sudo pmset -a disablesleep 0

    To zmienia ustawienia systemu na stałe (do odwołania). Nie wkładaj tak ustawionego laptopa do plecaka — z zamkniętą pokrywą będzie pracował dalej i się nagrzewał.

Caffeinate nie działa — najczęstsze przyczyny

  • Zamknięta pokrywa — patrz wyżej, caffeinate tego nie obejmuje.
  • Flaga -s na baterii — działa tylko przy zasilaczu. Użyj -i.
  • Ekran gaśnie mimo caffeinate — samo -i nie blokuje wygaszania ekranu, dodaj -d. To, że gaśnie ekran, nie znaczy, że komputer zasnął.
  • caffeinate już się zakończył — minął czas z -t, skończył się program albo zamknięto okno Terminala. Sprawdź pmset -g assertions | grep caffeinate.
  • Pojawia się ekran blokady — blokada ekranu (wygaszacz, „wymagaj hasła”) to co innego niż uśpienie. Procesy działają dalej, nawet jeśli Mac jest zablokowany.

Aplikacja zamiast komendy

Jeżeli wolisz klikać niż pisać w Terminalu, w App Store jest darmowa aplikacja Amphetamine — ikonka na pasku menu, sesje „nie usypiaj” na określony czas, do końca działania wybranej aplikacji albo pobierania pliku. Pod spodem korzysta z tych samych mechanizmów co caffeinate.

Na stałe (bez żadnych narzędzi) można też zmienić ustawienia: Ustawienia systemowe → Ekran blokady (czas wyłączania ekranu) oraz w MacBookach Bateria → Opcje (zapobieganie automatycznemu usypianiu przy podłączonym zasilaczu). Tylko że wtedy trzeba pamiętać, żeby to później cofnąć — dlatego do jednorazowych zadań caffeinate jest wygodniejszy.

Przy okazji pracy w Terminalu: jeśli zamiast polskich znaków widzisz krzaczki, zobacz szybki fix na brak polskich liter w Terminalu.

Najczęstsze pytania o caffeinate

01Czy caffeinate trzeba instalować?+
Nie. caffeinate jest wbudowany w macOS od wersji 10.8 Mountain Lion. Wystarczy otworzyć Terminal i wpisać komendę — instalacja przez Homebrew nie jest potrzebna.
02Co oznacza caffeinate -dimsu?+
To połączenie pięciu flag: -d (nie wygaszaj ekranu), -i (nie usypiaj z powodu bezczynności), -m (nie usypiaj dysku), -s (nie usypiaj systemu, tylko przy zasilaczu) i -u (użytkownik aktywny, bez -t trwa 5 sekund). Do większości zadań wystarczy -i albo -di.
03Jak wyłączyć caffeinate?+
Naciśnij Ctrl+C w oknie Terminala, w którym działa, albo wpisz killall caffeinate w innym oknie. caffeinate kończy się też sam po czasie z -t albo po zakończeniu programu, który przez niego uruchomiono.
04Czy caffeinate działa po zamknięciu pokrywy MacBooka?+
Nie. Po zamknięciu pokrywy MacBook zaśnie mimo caffeinate. Pracuje dalej tylko w trybie z zamkniętą pokrywą (zasilacz i zewnętrzny monitor) albo po wyłączeniu usypiania komendą sudo pmset -a disablesleep 1.
05Jak długo działa caffeinate?+
Bez flag działa do momentu przerwania (Ctrl+C). Z -t tyle sekund, ile podasz, a gdy uruchomisz przez niego program (np. caffeinate -i claude) — dopóki ten program działa.
06Czy caffeinate szkodzi baterii?+
Sam w sobie nie, ale Mac, który nie zasypia, zużywa więcej energii. Na baterii ustaw limit czasu przez -t albo podłącz zasilacz przy długich zadaniach.

Podsumowanie

Jeżeli regularnie korzystasz z Claude Code albo uruchamiasz długie procesy z poziomu terminala, caffeinate powinien znaleźć się wśród podstawowych narzędzi. Jedna komenda wystarczy, aby uniknąć przypadkowego uśpienia komputera podczas wielogodzinnej pracy:

zsh
caffeinate -i claude

To rozwiązanie jest proste, bezpieczne i nie wymaga modyfikowania ustawień zasilania w macOS. Po zakończeniu pracy wszystko wraca do domyślnej konfiguracji systemu. A jeśli myślisz o Macu pod lokalne modele AI, które potrafią mielić godzinami, zajrzyj do tekstu który MacBook najlepiej sprawdzi się do lokalnych modeli LLM.

Opublikowano · Znalazłeś błąd? Napisz
Piotr Cichosz
Autor

Od ponad 10 lat jestem zaangażowany w świat elektroniki użytkowej, zdobywając szeroką wiedzę i doświadczenie w testowaniu oraz recenzowaniu najnowszych technologii. Moja kariera obejmuje pracę w wiodących firmach technologicznych, gdzie specjalizowałem się…

Czytaj dalej
← Poprzedni AI podstawą w warsztacie programisty. JetBrains pokazuje skalę zmiany