Bataryaya yakın kapaktaki uykuyu önlemek için kafein kullanın


40

Yerel caffeinateyardımcı program, ekranı kapattığımda macbook'umun uyumasını engellemek için çalışmıyor. Bunun yerine, sistem uyuyor ve çeşitli ağ servislerini (VPN, ekran paylaşımları, VOIP aramaları, mesajlaşma istemcileri, dosya aktarımları) masamdan toplantıya <5 dakika içinde yürürken başarısız oluyor .

Dizüstü bilgisayar kapağı yarı açıkken dolaşmak kahvemle güvenli bir şekilde taşınmayı zorlaştırıyor ve kesinlikle serin.

Yerel caffeinateyardımcı program bunu kullanıcı dostu bir alternatif olarak pmsetkullanmak için tasarlanmıştır, ancak AC gücüyle bağlantısı kesildiğinde çalışmayacak şekilde tasarlanmıştır.

Yoluyla dokümanlar man caffeinate

-S Sistemin uyumasını önlemek için bir iddia oluşturun. Bu iddia yalnızca sistem AC gücüyle çalışırken geçerlidir .

InsomniaX veya burnu için yerel bir alternatif mi arıyorsunuz .

Zaman aşımı özelliği çok önemlidir, böylece yanlışlıkla macbook'umun bir torbaya yanlışlıkla doldurulmaması ve sıcak bir karışıklık yaşanması önlenir. ( caffeinate -t, saniye cinsinden zaman aşımı değerini belirtir)


Korkarım yerel bir alternatif yok , çünkü MacBook'un kapattığınızda uykuya geçmesi gerekiyor. : - /
Asmus,

2
MacBook ile dolaşmak tam da neden kapak kapalıyken uyumayı engellemek için bir çözüm istiyorum.
theonlygusti

Seçeneğini denediniz mi -tgibi caffeinate -t 3600? Tecrübelerime göre, macbook batarya ile çalışıyor olsa bile çalışıyor.
Qiang Xu

Öneri için teşekkürler, ilk girişimlerde işe yaramadı. Bir şey mi eksik? Test Edildi 1) caffeinate -t 36002) Dizüstü bilgisayarı kapatın 3) Bekleyin 5s 4) Oturum açma ekranını ve bağlantısı kesilmiş ağ servislerini bulmak için dizüstü bilgisayarı açın.
burada

@here olsa kapağı kapatmaya çalışmadım. -tMacbook'um bataryadayken ve sadece uyku modunda olmadığımda sadece seçeneği komutla koştum . Kapak kapalıyken denemedim, ancak macbook siz kapağı kapatır kapatmaz uyumak zorunda kalacak gibi görünüyor. Yanlış anladığım için üzgünüm. Sadece pille çalıştığında, kapağı kapalı olmadan çalışmasını sağlayacak bir yol aradığını düşünüyordum.
Qiang Xu

Yanıtlar:


36

Bu ideal değil, ama işte bir çözüm. Kapak kapalıyken ve pille çalışırken dizüstü bilgisayarın uyumasını önlemek için aşağıdaki komutları uygulayın:

sudo pmset -b sleep 0; sudo pmset -b disablesleep 1

Kapak kapalıyken ve pille çalışıyorsanız dizüstü bilgisayar uyku modunu yeniden etkinleştirmek için aşağıdaki komutları çalıştırın:

sudo pmset -b sleep 5; sudo pmset -b disablesleep 0

İkinci komut grubundaki "5", batarya ile uyumadan önceki dakika sayısını gösterir; dizüstü bilgisayarınız için istediğiniz şekilde ayarlayın.

Bu biraz tehlikelidir, çünkü ayarlarınızı tekrar etkinleştirmeyi unutursanız, dizüstü bilgisayar pille çalışırken asla uyumaz. Bu nedenle, ayarları otomatik olarak yeniden etkinleştirmek için bir kabuk betiği yazdım:

#!/bin/bash
#***************************************************************************
#*** noz - prevent laptop from sleeping when lid is closed
#***************************************************************************

#***** set some defaults *****
BATTERY_SLEEP=5 # in minutes
DEF_WAKE_LEN=300 # in seconds

#***** determine timeout value *****
timeout_len=${1:-$DEF_WAKE_LEN}

function prevent_sleep() {
    echo
    echo -n "Preventing sleep for $timeout_len seconds; press <enter> to continue..."

    sudo pmset -b disablesleep 1
    sudo pmset -b sleep 0
}

function enable_sleep() {
    # $1: <enter> = 0, timeout = 1, Ctrl-C = undef

    #----- insert a newline for timeout or Ctrl-C -----
    if [[ ${1:-1} -eq 1 ]]; then    echo; fi
    echo "Restoring previous battery sleep setting: $BATTERY_SLEEP"

    sudo pmset -b disablesleep 0
    sudo pmset -b sleep $BATTERY_SLEEP

    #----- sleep on timeout only -----
    if [[ ${1:--1} -eq 1 ]]; then   sudo pmset sleepnow; fi
    exit
}

#***** prevent it from sleeping *****
prevent_sleep

#***** trap Ctrl-C *****
trap enable_sleep INT

#***** wait for an enter *****
read -t $timeout_len
rc=$?

#***** re-enable normal sleep *****
enable_sleep $rc

Eğer çarpana kadar kabuk komut dosyası uyku devre dışı bırakacaktır Enteruyku ayarlarını yeniden etkinleştirmek noktadaki anahtarı (dönüşümlü, sen vurabilir Ctrl- Cve aynı şeyi başarmak). Ayrıca, uyku ayarlarının otomatik olarak tekrar etkinleştirileceği ve dizüstü bilgisayar uyku moduna geçmeye zorlanacağı zaman aşımı süresini (varsayılan olarak 300 saniye / 5 dakika) ayarlayacaktır. Dizüstü bilgisayarınızı bir toplantıda kullanıyorsanız bu bir acı olsa da, eve gitmek için dizüstü bilgisayarınızı unutup çantanıza koyarsanız cankurtaran olur.

Zeki okuyucular, bu komutların gerektirdiğini not edecektir sudo; ne yazık ki, bu kaçınılmaz AFAIK. Sistemimde yaptığım şey pmsetroot yapmak için şifremi girmek zorunda kalmamamı sağlamak. Bunu yapmak için sudoersdosyayı ( sudo visudo) düzenleyin ve bu satırı ekleyin:

joe ALL=(ALL) NOPASSWD: /usr/bin/pmset

"joe" yerine kullanıcı adınızı girin. SETUID kabuk betiğini çalıştırarak muhtemelen aynı sonucu elde edebilirsiniz (örn. Betiği şifrenizi girmeden çalıştırmak), ancak bunu yapmaktan hoşlanmıyorum; sudo'lar aracılığıyla bu tek komutu açmak benim için daha az riskli görünüyor.

Komut dosyasını çalıştırmak için, dizininize yapıştırın PATHve şu şekilde çağırın:

noz [<timeout in seconds>]

Gittiğiniz yere ulaştığınızda, sadece Enterveya Ctrl- tuşuna basın Cve gitmeniz iyi olur. Ve unutursanız, otomatik olarak sıfırlanır ve uyur.

Bunların hepsini AppleScript ile elde etmenin muhtemelen bir yolu vardır, böylece daha sonra bir kısayol tuşu atayabilirsiniz; Bunu komut satırından çalıştırmaktan hiç yorulmazsam deneyeceğim.


6
Güzel! Çok teşekkürler! Bir öneri / basitleştirme: sleepAyarı değiştirmeniz gerektiğini düşünmüyorum . Sadece disablesleepaç ve kapat. pmset -a disablesleep 1ve pmset -a disablesleep 0benim için iyi çalış. Kapağı kapattığımda MacBook'um uyumuyor. Diğer tüm ayarlar aynı kalır.
jcsahnwaldt

Github kullanıcısı iccir, bu numarayı kaputun altında kullanan Fermata adlı ücretsiz bir uygulama yaptı ve bir menubar ikonu ve bir zamanlayıcı vb. İle güzelce sarardı. github.com/iccir/Fermata
Alex Ryan

5

Github user iccir, Fermata adında tam olarak istediğinizi yapan küçük bir menubar uygulaması yaptı: MacBook'u kapak kapalıyken uyanık tutar ve zaman aşımı süresini ayarlamanıza olanak tanır.

Mojave (10.14.2) 'de denedim ve benim için çok iyi çalıştı. https://github.com/iccir/Fermata


4

Bunu yapmanın yerel bir yolu yok. İşte bazı araştırma ve denemelerden sonra aldığım şey:

görüntü tanımını buraya girin

Not:

  • Nosleep'in çekirdek uzantısı High Sierra'ya yüklenemedi
  • Özel SPI, Yüksek Sierra'dan sonra Apple tarafından desteklenmiyor. Fermatapmset 1.1 sürümünden sonra yönteme geçti.
  • Uykusuzluğun beklendiği gibi çalışmasına izin vermek için Gatekeeper'ı devre dışı bırakmanız gerekebilir .
  • Denediğim diğer uygulamalar kapağı kapalıyken çalışmıyor

1

Bu uygulamayı denediniz mi? Peşinde olduğun şey için çok faydalı buluyorum.

Uygulamanın ayarlarında belirlediğin zaman aşımı özelliğine sahip olduğundan eminim.


6
@ Mitchell m-d. Soru özellikle kafein gibi yerel bir çözüm istiyor. Önerilen diğer uygulamalar vardır edilir-orada-herhangi yollu to-set-a-macbook-pro-to-not-uyku-zaman-sen-yakın-kapak Yine de, ben denedim kafein Eğer öyle tavsiye uygulamayı değil ben kapağını kapattığınızda uyku benim macbook engeller.
burada
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.