Cara mencegah Mac sleep saat build Xcode atau cargo yang lama

Henry AGI
7 menit bacaJun 2026
Cara mencegah Mac sleep saat build Xcode atau cargo yang lama

Solusi cepat dan gratisnya adalah caffeinate: jalankan caffeinate -i cargo build --release (ganti dengan perintah Anda sendiri) dan macOS tidak akan idle-sleep sampai proses itu selesai, tanpa perlu aplikasi tambahan. Satu flag ini menyelesaikan masalah gangguannya, tapi bukan masalah keamanannya, karena caffeinate sama sekali tidak tahu apakah Mac sedang overheat atau baterainya nyaris habis selagi ia menahan kuncinya. Berikut cara mencegah Mac sleep saat build dengan cara gratis, di mana cara gratis itu mulai kehabisan akal pada build native yang panjang, dan dua cara LidRun yang paham konteks build untuk menjaga Mac tetap menyala secara otomatis, lalu membiarkannya sleep begitu build selesai atau perangkat kerasnya perlu istirahat.

Kenapa build terhenti saat Anda tinggal pergi

Idle sleep timer tidak tahu apa itu build. Ia memantau aktivitas input dan layar, bukan apakah clang sedang di tengah-tengah mengompilasi satu translation unit. Build cargo yang berjalan 40 menit tanpa ada ketikan terlihat persis seperti mesin yang menganggur, jadi macOS melakukan hal yang "bertanggung jawab": tidur.

Saat Mac sleep di tengah build, pekerjaan berhenti persis di tempatnya. Tidak ada yang rusak, tapi compiler-nya beku, dan cache incremental yang sedang terbentuk pun berhenti terbentuk. Anda membangunkan Mac, build itu lanjut atau mengulang dari awal, dan penantian yang tadinya Anda kira hampir selesai pun dimulai lagi.

Ini paling menyebalkan pada pekerjaan yang panjang dan sunyi: archive Xcode penuh, instalasi node_modules baru, atau build release cargo dengan optimisasi aktif. Justru build yang paling ingin Anda jalankan lalu tinggal begitu saja adalah yang paling mungkin diinterupsi oleh idle timer.

Solusi gratis: bungkus build dengan caffeinate

Sebelum mencari aplikasi apa pun, coba dulu alat yang sudah ada di Mac. caffeinate adalah utilitas command-line milik Apple sendiri untuk menahan power-management assertion, dan ia bisa langsung membungkus sebuah perintah: caffeinate -i cargo build --release menahan idle-sleep assertion persis selama proses itu berjalan, lalu melepaskannya begitu proses tersebut selesai. Ganti dengan perintah Anda sendiri: caffeinate -i npm run build, caffeinate -i xcodebuild -scheme MyApp -configuration Release build, caffeinate -i make all.

Flag -i inilah yang penting di sini (mencegah idle sleep); -d juga menjaga layar tetap menyala kalau Anda ingin menonton output-nya bergulir, dan -w <pid> memungkinkan Anda menempelkan caffeinate ke proses yang sudah berjalan tanpa perlu memulainya sendiri. Untuk satu kali build di Mac yang sedang Anda pakai langsung, ini jawaban yang sepenuhnya masuk akal, tanpa perlu instal apa pun, dan layak diketahui berdasarkan kelebihannya sendiri.

Ini benar-benar langkah pertama yang tepat bagi banyak orang. Sisa artikel ini membahas di titik mana cara itu mulai tidak cukup, dan seperti apa pengaturan yang paham build sekaligus memeriksa keamanan begitu titik itu tercapai.

Panduan terkaitBuat Mac Anda tetap menyala hanya saat benar-benar bekerja

Di mana solusi gratis ini mulai kehabisan akal

caffeinate tidak tahu sama sekali kondisi Mac Anda. Ia menahan idle-sleep assertion yang sama persis di baterai 8% pada laptop yang panas maupun di 90% di atas meja dengan aliran udara baik, karena ia tidak membaca sinyal yang mana pun — ia adalah wake lock, bukan jaring pengaman. Biarkan build release yang panjang berjalan tanpa pengawasan di bawah caffeinate, dan tidak ada yang memantau baterai atau kondisi termal untuk Anda.

Cakupannya juga terbatas hanya pada proses yang Anda bungkus, yang menjadi kelebihan sampai akhirnya jadi celah. Tutup tab terminal, sesi SSH terputus, atau shell job kena SIGHUP, dan assertion itu bisa ikut mati kecuali Anda ingat memakai nohup atau disown — dan sekarang Anda kembali tanpa perlindungan pada build yang tadinya Anda kira sudah aman.

Versi masalah ini untuk lid tertutup memakai alat yang sama sekali berbeda: pmset -a disablesleep 1 adalah flag yang mencegah Mac sleep saat lid ditutup (flag yang sama yang dipakai clamshell mode milik LidRun sendiri di baliknya, selalu dipasangkan dengan disablesleep 0 saat dimatikan). Jalankan secara manual untuk satu build dengan lid tertutup lalu lupa mengembalikannya, dan setiap kali lid Mac itu ditutup di masa depan, Mac tidak akan sleep sampai Anda ingat mematikannya lagi — sebuah jebakan nyata untuk sesuatu yang tadinya dimaksudkan hanya sekali pakai.

Alat menu-bar seperti Amphetamine, KeepingYouAwake, Lungo, dan Caffeine mengatasi masalah "lupa mematikan" dengan UI yang lebih enak dipakai daripada mengetik flag. Amphetamine secara khusus bisa memicu berdasarkan aplikasi yang sedang berjalan, tanpa perlu toggle manual, dan menawarkan pemicu berdasarkan level baterai untuk mengakhiri sesi — keduanya sungguh berguna. Yang tidak dilakukan salah satu pun dari mereka, sejauh fitur yang mereka publikasikan, adalah memadukan itu dengan tekanan termal secara langsung seperti yang dilakukan ambang auto-stop pada baterai maupun panas sekaligus. Mereka menahan kuncinya sesuai jadwal atau pemicu yang Anda atur, dan tetap Anda sendiri yang harus tahu kapan waktunya melepas.

Dua cara LidRun yang paham build untuk menjaga Mac tetap menyala

Janji dasar LidRun sederhana: selama agent atau build berjalan, tetap menyala; begitu build selesai atau Mac tidak aman, lepaskan dan biarkan sleep. Ada dua cara untuk mencapainya pada build native.

Cara pertama sepenuhnya otomatis. Auto Mode memantau dev tools yang Anda beri tahu, berdasarkan nama proses, atau berdasarkan command line untuk interpreter seperti node dan python, dan menjaga Mac tetap menyala selama tools itu benar-benar bekerja. cargo, xcodebuild, swift, swiftc, npm, node, pnpm, yarn, make, cmake, ninja, gradle, mvn, dan dotnet sudah ada di default watch list, tidak perlu menambahkan apa pun untuk toolchain standar. Sebuah proses baru dihitung aktif kalau CPU-nya di atas ambang tertentu (5% secara default, bisa disesuaikan), jadi Terminal yang menganggur tidak akan menjaga Mac tetap menyala, tapi compiler yang membebani satu core akan menjaganya. Holdoff, 60 detik secara default dan bisa disesuaikan dari 10 sampai 600, menjaga assertion tetap hidup melewati sampel sibuk terakhir, sehingga jeda singkat antar-fase build tidak menjatuhkan kuncinya.

Cara kedua bersifat eksplisit: bungkus build dengan lidrun -- <perintah build Anda> dan LidRun menahan keep-awake assertion persis selama masa hidup perintah tersebut, lalu melepaskannya begitu perintah itu selesai. Exit code dari perintah itu sendiri menjadi exit code lidrun, jadi $? (atau if lidrun -- npm run build; then … di dalam skrip) memberi tahu Anda apakah build-nya berhasil. LidRun sendiri tidak menampilkan durasi, jadi salurkan lewat time kalau Anda menginginkannya: time lidrun -- cargo build --release.

Auto Mode lebih cocok kalau build datang dan pergi sepanjang hari di berbagai proyek berbeda; wrapper lebih cocok kalau Anda punya satu perintah panjang tertentu yang perlu diawasi, atau skrip bergaya CI. Keduanya adalah fitur Pro, bukan bagian dari tingkatan gratis — toggle Keep Awake biasa (mulai dan berhenti manual, gratis selamanya) sudah membawa safety governor baterai dan termal yang sama seperti dijelaskan di bawah, hanya saja ia tidak mendeteksi build untuk Anda.

Safety governor tetap berlaku

Menjaga Mac tetap menyala untuk build yang panjang itu bagian yang mudah. Melakukannya tanpa diam-diam "memasak" baterai atau bodi Mac adalah bagian yang perlu benar-benar diperhatikan, dan itulah kenapa LidRun tidak sekadar mematikan sleep lalu pergi begitu saja, apa pun dari dua mode di atas yang Anda pakai.

Baterai: ambang auto-stop, 20% secara default dan bisa disesuaikan dari 15% sampai 50%, menghentikan penahanan begitu daya turun di bawah itu, dan Mac bebas sleep secara normal dari situ alih-alih terus terkuras sampai habis. Termal: LidRun melacak tekanan termal dari sinyal SoC itu sendiri, bukan sekadar pembacaan level OS yang kasar, dan pada pembacaan kritis Safety Governor langsung melepaskan penahanan keep-awake; kalau Anda juga mengaktifkan "sleep saat overheat", ini bisa meningkat sampai benar-benar menidurkan Mac, bukan sekadar melepas kuncinya. Ini membantu mengurangi risiko, tapi tidak membuat overheating jadi mustahil terjadi — aliran udara dan di mana Anda meletakkan laptop tetap tanggung jawab Anda.

Setiap keputusan itu dicatat di Activity Log lengkap dengan alasannya — entri auto-stop baterai menyebutkan persentase saat ia terpicu, entri termal berarti Safety Governor yang mundur — jadi kalau build yang panjang terpotong di tengah jalan, Anda bisa melihat alasannya alih-alih menebak-nebak. Log itu adalah kompensasi jujur karena LidRun bukan wake lock yang bekerja membabi buta.

Menyiapkannya untuk build sehari-hari

Auto Mode: klik ikon menu-bar LidRun lalu aktifkan Auto Mode. Untuk toolchain Xcode, npm, atau cargo yang normal, tidak ada yang perlu dikonfigurasi — tools-nya sudah ada di default watch list. Subtool Apple yang lebih luas seperti clang dan swift-frontend berjalan di banyak proses lain yang tidak berhubungan, jadi keduanya default-nya nonaktif sebagai chip opt-in alih-alih otomatis dipantau; aktifkan hanya kalau Anda memang ingin LidRun bereaksi terhadapnya.

CLI wrapper: instal perintah lidrun sekali saja dari menu (ini menulis skrip wrapper kecil ke /usr/local/bin/lidrun), lalu jalankan build Anda lewat perintah itu: lidrun -- cargo build --release, lidrun -- xcodebuild -scheme MyApp build, lidrun -- npm run build. Untuk perintah berantai, beri tanda kutip pada keseluruhannya sebagai satu argumen, lidrun -- 'npm ci && npm run build', kalau tidak shell akan memisah di && sebelum lidrun sempat melihatnya, dan hanya separuh pertama yang terlindungi. Anggap saja ada ekor singkat yang kurang lebih sama di kedua cara, Auto Mode memeriksa ulang proses yang berjalan setiap 10 detik dan bertahan sepanjang holdoff 60 detik secara default, jadi Mac bisa tetap menyala kurang dari satu menit setelah build benar-benar selesai. Itu perilaku yang memang diharapkan, bukan bug.

Kalau sebuah build terpotong, buka dulu Activity Log daripada langsung menjalankan ulang tanpa tahu sebabnya — entrinya menyebutkan apakah itu batas bawah baterai atau backoff termal, dan Anda bisa menaikkan ambang baterai atau memperbaiki aliran udara sesuai kebutuhan. Timer mode (preset tetap dari 30 menit sampai 8 jam) adalah alat berbeda untuk keperluan berbeda, berguna kalau Anda tahu persis berapa lama sesuatu seharusnya berjalan; untuk build yang durasinya tidak Anda ketahui sebelumnya, Auto Mode atau wrapper lebih cocok karena keduanya berhenti saat pekerjaan selesai, bukan pada jam yang harus Anda tebak dengan tepat.

Dua kebiasaan yang penting apa pun mode-nya: jalankan pekerjaan terberat — clean build penuh, LTO pass yang besar — di permukaan keras dan rata dengan aliran udara di bawahnya, dan tetap terhubung ke listrik kalau bisa, karena laptop yang pakai baterai tetap harus menghormati batas bawah auto-stop, sementara daya listrik menghilangkan soal itu sepenuhnya. Kalau build Anda berjalan di dalam container, masalah idle-sleep yang sama juga berlaku di sana — kasus Docker-build dibahas terpisah karena proses yang perlu dipantau LidRun berbeda.

Coba ini ketimbang melawan tidur saat layar tertutup

LidRun menjaga pekerjaan Anda tetap jalan saat layar tertutup, dengan perlindungan baterai dan suhu bawaan.

Unduh untuk macOS

Sudah punya LidRun? Baca panduan setup-nya →

Baru kenal LidRun? Lihat harga →

Sering ditanyakan

Apakah LidRun akan menjaga Mac tetap menyala setelah build selesai?

Tidak. Dengan lidrun -- <perintah>, assertion dilepaskan begitu perintah tersebut selesai. Dalam Auto Mode, begitu tidak ada lagi proses yang dipantau sibuk di atas ambang CPU (melewati holdoff, 60 detik secara default), LidRun membiarkan Mac sleep lagi.

Apakah Auto Mode mendeteksi build cargo, npm, dan Xcode langsung tanpa pengaturan?

Ya. cargo, xcodebuild, swift, swiftc, npm, node, pnpm, yarn, make, cmake, ninja, gradle, mvn, dan dotnet sudah ada di default watch list. Sebuah proses baru dihitung aktif kalau CPU-nya di atas ambang tertentu, jadi shell yang menganggur tidak akan menjaga Mac tetap menyala, tapi compile sungguhan akan menjaganya.

Apa bedanya dengan sekadar menjalankan caffeinate -i sendiri?

caffeinate melakukan pekerjaan inti yang sama, menahan idle-sleep assertion selama masa hidup sebuah perintah, secara gratis, dan untuk satu build sekali pakai itu pilihan yang sepenuhnya masuk akal. LidRun menambahkan deteksi (Anda tidak perlu mengetik ulang wrapper setiap kali), auto-stop baterai dan termal alih-alih menahan secara membabi buta, dan entri Activity Log yang menjelaskan kenapa sebuah sesi berakhir.

Bagaimana kalau build membuat Mac overheat?

Pada pembacaan termal kritis, Safety Governor langsung melepaskan penahanan keep-awake dan mencatatnya; dengan "sleep saat overheat" aktif, ini bisa meningkat sampai benar-benar menidurkan Mac. Ini membantu mengurangi risiko, tapi tidak bisa menjamin Mac tidak akan pernah overheat — penempatan dan aliran udara tetap tanggung jawab Anda.

Bisakah saya menjaga build tetap berjalan saat pakai baterai?

Bisa, selama masih dalam ambang auto-stop yang Anda atur (20% secara default, bisa disesuaikan dari 15% sampai 50%). Begitu daya turun di bawah itu, LidRun mengakhiri sesi dengan rapi alih-alih terus terkuras sampai habis. Untuk build paling berat, tetap terhubung ke listrik masih pilihan yang lebih aman.

Apakah saya perlu membayar untuk Auto Mode atau wrapper lidrun --?

Auto Mode dan CLI wrapper adalah fitur Pro. Mode Keep Awake manual, Timer, dan Charging-only gratis selamanya dan sudah menjalankan safety governor baterai serta termal yang sama, hanya saja Anda yang memulai dan menghentikannya sendiri, bukan LidRun yang mendeteksi build-nya.

Penasaran apakah LidRun cocok untuk Anda?

Biarkan ChatGPT, Claude, atau Perplexity yang mencari tahu — klik di bawah dan lihat pendapat AI tentang LidRun.