Mencegah Mac tidur saat menjalankan perintah terminal yang lama

Jawaban singkatnya: tambahkan caffeinate -i your-command, atau lidrun -- your-command, di depan perintah Anda, dan Mac akan tetap menyala sampai prosesnya selesai — tanpa perlu ditunggui. Yang sering dilewatkan kebanyakan panduan: menutup lid bekerja lewat mekanisme yang sama sekali berbeda — baik caffeinate maupun keep-awake assertion biasa tidak bisa mencegahnya. Inilah bagian yang sering menjebak orang yang menjalankan job panjang tanpa pengawasan.
Kenapa perintah panjang terputus di tengah jalan
Perintah yang berjalan di Terminal adalah proses biasa yang terikat pada status daya Mac. Tinggalkan cukup lama hingga idle timer aktif, atau tutup lid-nya, dan Mac akan tidur dengan perintah tersebut tersuspensi di tengah proses.
Transfer rsync yang lama, proses build, download model, dan batch script adalah jenis perintah yang paling mungkin melampaui idle timer — dan justru ini juga perintah yang paling tidak ingin Anda ulangi. Job-nya sebenarnya tidak gagal — Mac-nya saja yang berhenti di bawahnya.
Ada satu lagi mode kegagalan terkait yang perlu disebutkan sejak awal: kalau Anda SSH ke sebuah Mac untuk menjalankan job dari jarak jauh, mesin itu punya idle timer dan lid-close timer sendiri, yang sepenuhnya independen dari koneksi SSH Anda. Tool keep-awake harus berjalan di mesin yang benar-benar mengerjakan job, bukan di mesin tempat Anda mengetik.
caffeinate dan flag-flag-nya
macOS sudah menyertakan caffeinate untuk kebutuhan ini, dan untuk satu job foreground, ini adalah tool yang tepat — tanpa instalasi, tanpa biaya. Kombinasi flag-nya yang menentukan apa yang sebenarnya dijaga tetap terbuka:


caffeinate -i your-command — memblokir idle sleep selama your-command berjalan, lalu keluar dan melepas assertion-nya secara otomatis. Ini yang paling banyak dicari orang untuk job terminal.
caffeinate -d your-command — juga menjaga display tetap menyala, berguna kalau Anda ingin sesekali melirik output yang bergulir tanpa layar meredup.
caffeinate -s your-command — memblokir system sleep, tapi hanya saat Mac terhubung ke listrik (AC power). Saat pakai baterai, -s diam-diam tidak melakukan apa-apa — kejutan yang cukup umum bagi siapa pun yang mengira perilakunya sama saat tidak dicolok.
caffeinate -w <pid> — sama sekali tidak membungkus perintah; ia menunggu proses yang sudah berjalan. Berguna untuk job yang sudah Anda mulai di background: long_job & caffeinate -w $!.
caffeinate -t 3600 — menahan assertion selama jumlah detik tertentu, bukan mengaitkannya ke sebuah proses — berguna untuk jendela waktu tertentu, bukan perintah spesifik.
Panduan terkaitMencegah Mac tidur selama Docker buildSampai mana caffeinate berhenti, dan kenapa lid adalah masalah yang terpisah
Yang tidak dilakukan caffeinate adalah memantau baterai atau panas. Semua flag di atas akan dengan senang hati menjaga laptop tetap menyala sampai baterainya habis, pada job yang tidak sedang Anda awasi, dan tak satu pun dari flag itu membaca status termal Mac saat kompilasi panjang yang membuat mesin panas.


Lid adalah persoalan yang berbeda lagi. Assertion dari caffeinate, dan pemanggilan IOPMAssertionCreateWithName yang sama yang dipakai CLI milik LidRun sendiri, hanya memblokir sleep *idle*. Menutup lid memicu clamshell sleep terpisah yang levelnya lebih rendah, yang tidak bisa dihentikan oleh assertion idle-sleep mana pun — OS akan tetap menidurkan mesinnya. Satu-satunya tuas publik yang bisa menjaga Mac dengan lid tertutup tetap menyala saat pakai baterai adalah pmset -a disablesleep 1, sebuah pengaturan sistem global yang butuh akses admin; dengan external display yang terhubung dan aktif, macOS juga tetap menyala lewat native clamshell mode, tanpa perlu tool pihak ketiga. Kalau menutup lid memang skenario Anda yang sebenarnya, bukan sekadar tetap di meja kerja, panduan lid tertutup kami membahas mekanisme itu beserta trade-off-nya secara lengkap — artikel ini tetap fokus pada kasus perintah terminal.
Menjalankan job panjang lewat SSH
Saat perintahnya berjalan di Mac jarak jauh, ada dua "jam" yang berpengaruh, dan keduanya saling independen. Yang pertama adalah idle-sleep timer milik Mac itu sendiri; yang kedua adalah apakah sesi SSH Anda bertahan dari gangguan jaringan atau terminal lokal Anda yang tertutup.
Untuk yang pertama, jalankan caffeinate -i atau lidrun -- di Mac jarak jauh itu sendiri, bukan di mesin lokal Anda — keep-awake assertion hanya melindungi mesin tempat ia dijalankan.
Untuk yang kedua, bungkus perintah di sisi remote dengan nohup, screen, atau tmux sebelum Anda memutus koneksi. Tanpa salah satu dari itu, menutup terminal lokal (atau koneksi yang terputus) bisa mengirim SIGHUP ke shell remote dan mematikan job tersebut, meski Mac-nya sendiri tidak pernah tidur.
Cara yang lebih aman untuk membungkus sebuah perintah
CLI LidRun memakai pola satu-perintah yang sama dan menambahkan guardrail yang dilewatkan caffeinate: lidrun -- your-command menahan sebuah keep-awake assertion berumur pendek untuk satu run itu, dan melepasnya begitu perintah selesai — tanpa perlu lisensi atau setup apa pun. Gratis dan tanpa batas, sama seperti caffeinate.
Selama assertion itu aktif, batas baterai dan pelepasan otomatis karena panas pada aplikasi tetap berlaku kalau LidRun sedang berjalan: keep-awake berhenti otomatis pada ambang baterai yang Anda atur (default 20%, bisa disesuaikan 15–50%), dan ada batas darurat keras di 4% yang selalu aktif berapa pun setelan Anda, karena macOS butuh ruang gerak sebesar itu untuk menyelesaikan proses tidur dengan bersih. Kalau status termal Mac mencapai level kritis, penahanan itu juga terlepas sendiri secara default — janji jujur LidRun adalah: kalau agent atau job sedang berjalan, tetap menyala; kalau job sudah selesai atau Mac dalam kondisi tidak aman, lepaskan dan biarkan tidur.
Ada juga versi GUI dari ini di dalam aplikasi — panel Run & Watch yang menjalankan sebuah perintah, menjaga Mac tetap menyala untuknya, dan menampilkan output secara langsung tanpa Anda perlu menyentuh Terminal — tapi panel ini adalah fitur Pro. Wrapper CLI lidrun -- <command> yang biasa sama sekali tidak dikunci; itu bagian dari tingkat gratis LidRun.
Setup praktis
Perintah sekali jalan, saat Anda ada di meja kerja: tambahkan di depan lalu tinggal pergi — lidrun -- your-long-command atau caffeinate -i your-long-command sama-sama berhasil, dan assertion-nya terlepas begitu perintah selesai. Keduanya tidak butuh setup lain.
Sesi tanpa pengawasan yang lebih lama, lid tetap terbuka: colokkan ke listrik kalau bisa, mulai perintahnya, dan kalau Anda ingin guardrail baterai/termal LidRun mengawasi seluruh sesi, bukan cuma satu proses, aktifkan dulu toggle Keep Awake di menu bar, baru jalankan perintah Anda seperti biasa. Atur session timer (pilihannya mulai dari 30 menit hingga 8 jam) supaya script yang macet tidak menjaga Mac tetap menyala tanpa batas waktu — job yang macet justru contoh kasus di mana keep-awake tanpa pengawasan sebaiknya tidak berjalan selamanya.
Sesi dengan lid tertutup: ini secara khusus butuh Closed-Lid mode, bukan sekadar keep-awake biasa — lihat panduan khusus yang ditautkan di atas, karena ini mengubah perhitungan keamanannya (panas tidak punya jalan keluar saat lid tertutup).
Apa pun setupnya, letakkan Mac di permukaan yang keras dan berventilasi untuk job-job berat. Build, kompresi, atau transfer yang lama bisa membuat mesin jadi hangat, dan sirkulasi udara adalah satu hal yang tidak bisa diperbaiki oleh pengaturan software apa pun.
LidRun menjaga pekerjaan Anda tetap jalan saat layar tertutup, dengan perlindungan baterai dan suhu bawaan.
Sudah punya LidRun? Baca panduan setup-nya →
Baru kenal LidRun? Lihat harga →
Sering ditanyakan
Untuk job pada Mac yang tercolok listrik dan akan Anda pantau, ya — caffeinate -i your-command andal dan gratis. Untuk job panjang tanpa pengawasan, terutama saat pakai baterai, caffeinate tidak punya kesadaran soal baterai atau panas, jadi ia akan tetap menjaga Mac menyala sampai baterai habis dan mati, atau sampai job-nya panas dan throttling.
-i memblokir idle sleep untuk perintah yang dibungkus (yang paling sering dibutuhkan job terminal), -d juga menjaga display tetap menyala, -s memblokir system sleep tapi hanya saat pakai listrik AC (tidak berpengaruh apa-apa saat baterai), dan -w <pid> menunggu proses yang sudah berjalan, bukan membungkus proses baru.
Bisa. Baik caffeinate -i your-command maupun lidrun -- your-command sama-sama menahan idle-sleep assertion selama proses tunggal itu berjalan, dan melepasnya secara otomatis saat perintah selesai. Wrapper CLI lidrun gratis dan tanpa batas, tidak butuh lisensi.
caffeinate dan keep-awake assertion biasa hanya memblokir idle sleep. Menutup lid memicu clamshell sleep terpisah yang tidak bisa dihentikan oleh idle-sleep assertion — Mac butuh external display yang aktif, atau pengaturan pmset -a disablesleep 1 yang butuh akses admin (yang dipakai Closed-Lid mode milik LidRun), supaya tetap menyala dengan lid tertutup.
Kalau Anda memakai mode Keep Awake LidRun dengan session timer yang sudah diatur, timer itu membatasi durasi run-nya — mulai dari 30 menit sampai 8 jam — supaya perintah yang macet tidak menjaga Mac tetap menyala tanpa batas. Wrapper caffeinate -i biasa tidak punya batas seperti itu; ia akan terus menahan sampai prosesnya selesai atau Anda menghentikannya sendiri.
Tool keep-awake harus dijalankan di Mac mana pun yang benar-benar mengerjakan job-nya, bukan di mesin lokal Anda — SSH tidak mengubah sleep timer milik Mac itu sendiri. Secara terpisah, bungkus perintah di sisi remote dengan nohup, screen, atau tmux supaya koneksi yang terputus atau terminal lokal yang tertutup tidak mengirim SIGHUP dan mematikan job tersebut, meskipun Mac remote-nya tetap menyala.