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

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

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

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

통해 문서 man caffeinate

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

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

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



답변

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

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

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

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

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

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

noz [<timeout in seconds>]

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

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


답변

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

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


답변

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

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

노트 :

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

답변

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

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


답변