카페인을 사용하여 배터리의 뚜껑을 닫을 때 잠을 자지 않도록


41

기본 caffeinate유틸리티가 디스플레이를 닫을 때 맥북이 잠자 지 않도록 작동하지 않습니다. 대신, <5 분 이내에 책상에서 회의까지 걸 으면 시스템이 절전 모드로 전환되고 다양한 네트워크 서비스 (VPN, 화면 공유, VOIP 통화, 메시징 클라이언트, 파일 전송)가 실패 합니다.

노트북 뚜껑을 반쯤 열어서 걷는 것은 내 커피를 안전하게 가지고 다니기가 어려우며 분명히 차갑지 않습니다.

기본 caffeinate유틸리티는이 제품을 사용자에게 친숙한 대체품으로 취급하도록 설계 pmset되었지만 AC 전원에서 분리하면 작동하지 않는 것으로 보입니다.

통해 문서 man caffeinate

-s 시스템이 절전 모드가되지 않도록 어설 션을 만듭니다. 이 어설 션은 시스템이 AC 전원으로 실행될 때만 유효합니다 .

InsomniaX 또는 nosleep 의 기본 대안을 찾고 있습니다.

타임 아웃 기능은 필자가 언데드 맥북을 실수로 가방에 넣는 것을 피하기 위해 필요하다. ( caffeinate -t시간 초과 값을 초 단위로 지정)


MacBook을 닫을 때 잠자기 모드로 설정되어 있기 때문에 기본 대안 이 없습니다 . :-/
Asmus

2
맥북과 주변에 걷는 것은 정확히 나는 또한 뚜껑이 닫힐 때 잠을 방지하기위한 솔루션을하려는 이유.
theonlygusti

당신은 -t같은 옵션을 시도 했습니까 caffeinate -t 3600? 내 경험에 따르면, 맥북이 배터리로 작동하더라도 작동합니다.
Qiang Xu

제안 해 주셔서 감사합니다. 초기 시도에는 효과가 없었습니다. 뭔가 빠졌습니까? 테스트 1) caffeinate -t 36002) 랩탑 닫기 3) 5 초 기다림 4) 로그인 화면과 연결이 끊어진 네트워크 서비스를 찾기 위해 랩탑을 엽니 다.
여기

@here 나는 뚜껑을 닫으려고하지 않았다. -t내 맥북이 배터리로 작동 중일 때 옵션으로 명령을 실행했는데 잠자기 상태가 아닙니다. 뚜껑을 닫은 채로 시도하지는 않았지만 뚜껑을 닫 자마자 맥북이 강제로 잠자기 상태가됩니다. 오해해서 미안해 뚜껑을 닫지 않고 배터리로만 작동 할 때 작동시킬 수있는 방법을 찾고 있다고 생각했습니다.
Qiang Xu

답변:


37

이상적이지는 않지만 여기에 해결책이 있습니다. 덮개가 닫혀 있고 배터리로 작동 중일 때 랩톱이 잠자 지 않게하려면 다음 명령을 실행하십시오.

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

덮개가 닫혀 있고 배터리로 작동 중일 때 랩탑 절전 모드를 다시 활성화하려면 다음 명령을 실행하십시오.

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

두 번째 명령 세트의 "5"는 배터리 사용시 잠자기 전의 시간 (분)을 나타냅니다. 랩톱에 맞게 조정하십시오.

설정을 다시 활성화하는 것을 잊어 버린 경우 배터리를 사용할 때 랩톱이 절대 절전 모드로 전환되지 않기 때문에 이는 다소 위험합니다. 이 때문에 설정을 자동으로 다시 활성화하는 쉘 스크립트를 작성했습니다.

#!/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

쉘 스크립트는 히트 할 때까지 자고 비활성화됩니다 Enter그것은 (교대, 당신은 칠 수 절전 설정을 다시 가능하게 지적되는 키 Ctrl- C와 같은 일을 달성을). 또한 절전 설정이 자동으로 다시 활성화 된 후 시간 초과 (기본값은 300 초 / 5 분)가 설정되고 랩톱은 강제로 절전 모드로 전환됩니다. 회의에서 랩톱을 사용하는 경우 이는 고통 스러울 수 있지만 랩톱을 잊어 버려 가방에 넣어 집으로 돌아 가면 생명을 구할 수 있습니다.

숙련 된 독자들은이 명령이 필요하다는 것을 알 것입니다 sudo. 슬프게도, 그것은 피할 수없는 AFAIK입니다. 시스템에서 수행 한 작업 pmset은 루트 로 실행하기 위해 비밀번호를 입력하지 않아도되도록하는 것 입니다. 이렇게하려면 sudoers파일 ( sudo visudo)을 편집하고 다음 줄을 추가하십시오.

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

"joe"를 사용자 이름으로 바꿉니다. 쉘 스크립트 SETUID를 실행하여 동일한 결과를 얻을 수 있습니다 (예 : 비밀번호를 입력하지 않고 스크립트를 실행하는 경우). sudoers를 통해이 하나의 명령을 여는 것은 나에게 덜 위험 해 보입니다.

스크립트를 실행하려면 스크립트를 디렉토리에 넣고 다음 PATH과 같이 호출하십시오.

noz [<timeout in seconds>]

당신이 어디로 가는지에 도착하면, 단순히 공격 Enter또는 Ctrl- C그리고 넌 좋은 이동합니다. 잊어 버리면 자동으로 재설정되고 절전 모드로 전환됩니다.

AppleScript를 통해이 모든 것을 달성 할 수있는 방법이있을 수 있으므로 단축키를 할당 할 수 있습니다. 커맨드 라인에서 이것을 실행하는 데 지친 적이 있다면 시도해 볼 것입니다.


6
시원한! 고마워요! 제안 / 단순화 : sleep설정 을 변경할 필요가 없다고 생각 합니다. 그냥 켜고 disablesleep끄십시오. pmset -a disablesleep 1그리고 pmset -a disablesleep 0나를 위해 잘 작동. 뚜껑을 닫을 때 MacBook이 잠자기 상태가 아닙니다. 다른 모든 설정은 동일하게 유지됩니다.
jcsahnwaldt '

Github 사용자 iccir는 Fermata라는 무료 앱을 만들었습니다. Fermata는 후드 아래 에서이 트릭을 사용하고 메뉴 막대 아이콘과 타이머 등으로 멋지게 마무리했습니다. 방금 Mojave (10.14.2)에서 시도해 보았습니다. github.com/iccir/Fermata
Alex Ryan

5

Github 사용자 iccir는 Fermata라는 매우 편리한 무료 메뉴 바 앱을 만들었습니다. Fermata는 뚜껑을 닫은 상태에서 MacBook을 깨우고 시간 제한 기간을 설정할 수 있습니다.

방금 모하비 (10.14.2)에서 시도해 보았습니다. https://github.com/iccir/Fermata


5

기본 방법은 없습니다. 다음은 몇 가지 검색 및 시험 후 얻은 것입니다.

여기에 이미지 설명을 입력하십시오

노트 :

  • High Sierra에서 Nosleep의 커널 확장을로드하지 못했습니다.
  • 개인 SPI는 High Sierra 이후 Apple에서 지원되지 않습니다. Fermatapmset 버전 1.1 이후 방법으로 전환
  • 불면증 이 예상대로 작동 하도록 게이트 키퍼를 비활성화해야 할 수도 있습니다 .
  • 다른 앱은 뚜껑을 닫은 상태에서 작동하지 않습니다

1

이 앱 을 사용해 보셨습니까 ? 나는 당신이 쫓는 것에 정확히 유용합니다.

앱 설정 내에서 설정 한 시간 초과 기능이 있다고 확신합니다.


6
감사합니다 @ mitchell-d. 문제는 특히 카페인과 같은 기본 솔루션을 요구하는 것입니다. 맥북 프로는 잠들지 않을 때 잠들지 않을 때 제안 된 다른 앱이 있습니다. 그럼에도 불구하고, 나는 당신이 추천 하는 카페인 앱을 시도 했습니다. 아니 , 내가 뚜껑을 닫으면 잠에서 내 맥북을 방지 할 수 있습니다.
여기
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.