macos 에서 pmset 관련 정리.

Intro

  • 최근 macos 에서 sleep 모드 관련해서 알아볼 일이 있어 정리하게 되었음.

pmset

  • 전원 관리 설정을 조작하는 명령어로 pmset 이 있다. 실행하면 아래처럼 정보가 나온다.
some@thing ~ % pmset -g
System-wide power settings:
Currently in use:
 standby              1
 Sleep On Power Button 1
 hibernatefile        /var/vm/sleepimage
 powernap             1
 networkoversleep     0
 disksleep            10
 sleep                1 (sleep prevented by powerd, sharingd)
 hibernatemode        3
 ttyskeepawake        1
 displaysleep         30
 tcpkeepalive         1
 powermode            0
 womp                 1
  • 위의 정보와 관련된 내용에 대해 살짝 알아보면
    • acwake: 전원 상태가 변경되면 잠자기에서 나옴 (0=나오지 않음, 1=나옴)
    • darkwakes: 배터리를 사용할 때 파워냅 사용 (0=사용, 1=사용하지 않음)
    • disksleep: 해당 시간(분) 후 디스크를 잠자기 상태로 진입
    • halfdim: 디스플레이가 잠자기 상태에 진입하기 전 밝기를 낮춤 (0=낮춤, 1=낮추지 않음)
    • hibernatemode: 잠자기 상태 (1=Safe 잠자기 사용, 3=Safe 잠자기와 일반 잠자기 사용)
    • hibernatefile: 잠자기 시 메모리 정보를 저장할 위치
    • lidwake: 액정을 열었을 때 잠자기에서 나옴 (0=나오지 않음, 1=나옴)
  • 이중 hibernatemode 에 대해서 조금더 알아보면.(정리중.)
    • (참고로 Hibernate 는 동명하다란 뜻을 가지고 있다.)
    • hibernatemode 0: normal sleep(standard sleep); this is the default setting if you’re using a desktop computer.
      • standard sleep : RAM이 활성화되어 있으며, 저장되지 않은 모든 파일, 문서 및 프로세스가 RAM에 저장. 절전 모드에서 깨어나는 속도가 매우 빠름.
    • hibernatemode 1: hibernate mode; this is the default for pre-2005 laptops.
      • Hibernate mode : RAM이 꺼져 있으므로 최대 절전 모드에 들어가기 전에 시동 드라이브가 RAM에서 데이터를 저장함. Mac은 디스크에서 RAM으로 데이터를 다시 복사하기 때문에 깨어나는데 약간 더 오래 걸림
    • hibernatemode 3: safe sleep; this is the default for laptops made after 2005.
      • safe sleep: RAM은 계속 켜져 있지만, 시동 드라이브는 여전히 RAM의 데이터를 저장합니다. 이 조합을 사용하면 Mac이 표준 수면에서 깨어나는 것만큼 빠르게 깨어남.
    • hibernatemode 25: hibernate mode; a setting compatible with post-2005 laptops.

pmset 명령어를 사용해 mac을 시작,종료해 보기.

  • 터미널에서 mac 시작 또는 종료 시간 설정해 보자.
    • pmset은 24시간으로 표현하며, 날짜 와 시간 형식은 MM/dd/yy HH:mm:ss 를 사용한다.
    • 원하는 요일에 해당하는 알파벳을 입력하면 된다.
    • M: Monday, T: Tuesday, W: Wednesday, R: Thursday, F: Friday, S: Saturday, U: Sunday
  • 아래 예시의 일부 옵션에 대한 설명
    • repeat은 계속 반복되는 작업에 사용한다.
    • schedule 을 사용할 수 있는데, schedule은 단 한번의 작업에 사용한다.
    • wakeorpoweron 대신 sleep, wake, poweron, shutdown 등의 명령어를 사용할 수 있다.
// 스케줄을 확인해보자.
pmset -g sched

// 월요일 오전 9시 마다 mac 을 깨우도록 예약 시간을 설정해 보자. 
sudo pmset repeat wake M 9:00:00

// 매일 오전 8시에 자동 시작 설정하기.
sudo pmset repeat wakeorpoweron MTWRFSU 8:00:00

// 매일 오후 10시에 자동 종료 설정하기
sudo pmset repeat shutdown MTWRFSU 22:00:00

// 자동 예약 스케줄 취소하기
sudo pmset repeat cancel

// 자동 시작과 종료 스케줄을 동시에 설정하기 
sudo pmset repeat wakeorpoweron MTWRFSU 8:00:00 shutdown MTWRFSU 22:00:00

pmset 명령어를 이용해 대기 모드, 절전 모드를 변경해 보기.

  • 대기 모드와 절전 모드의 차이는?
    • sleep mode 와 standby mode 를 먼저 알아야 한다.
      • sleep Mode (절전 모드) 는 컴퓨터가 빠르게 깨어날수 있도록 전력을 절약하는 모드
        • ram 에 데이터가 유지되고 (ram 에 전원이 공급) 거의 즉각적으로 깨어남
      • standby Mode (대기 모드) 는 더 많은 전력을 절약하기 위해 sleep mode 보다 더 깊은 절전 상태로 전환하는 것
        • ram 에 있는 데이터가 디스크로 저장(하이버네이트 이미지)되고 ram 에 전력이 끊김, sleep mode 보다 깨는데 더 오래걸림.
      • 일반적으로 standby mode 에서 일정 시간이 지나면 sleep mode 로 전환하게 된다.
    • 그렇다면 그 전의 mode 는?
      • active mode(활성모드) 는 사용자가 컴퓨터를 이용하고 있는 상태
      • idle Mode (유휴 모드) 는 사용자가 잠시 컴퓨터를 사용하고 있지 않는 상태.
  • 아래 예시의 일부 옵션에 대한 설명
    • 3600 초 는 1시간이다.
    • -a 는 all 로 (배터리 전원, 전원 어댑터 사용등 모든것을 나타낸다. )
    • -b 는 배터리
// sleep mode 에서 standby mode 로 전환하기까지 1시간(3600초)로 설정하기.
sudo pmset -a standbydelay 3600


// standby mode 를 완전히 비활성화 하기.
sudo pmset -a standby 0

// 다시 활성화 하고 싶으면 1로 세팅하기.
sudo pmset -a standby 1

// 시스템이 유휴 상태로 있을때 절전 모드로 전환되는 시간을 15분(900초)로 설정하기
sudo pmset -a sleep 15


// 절전 모드로 전환되지 않도록 설정하려면 
sudo pmset -a sleep 0

// 전원 관리 설정을 기본값으로 돌리려면
sudo pmset restoredefaults

caffeinate 도 사용해 보자.

  • 위와 같은 방식으로도 해결되지 않는 문제가 있어 더 알아보는중 알게 된
  • macos 에 내장된 도구인 caffeinate
  • 시스템이 절전 모드로 전환되는 것을 방지하고 아래와 같은 옵션들이 있다.
    • -d : Prevents the display from sleeping.
    • -i : Prevents the system from idle sleeping.
    • -m : Keeps the disk awake
    • -s : prevent the system from sleeping. This assertion is valid only when system is running on AC power.
  • 사용 예

// Prevent sleep for 1 hour (3600 seconds):
$ caffeinate -u -t 3600

// Make caffeinate fork a process, exec "make" in it, and hold an assertion that prevents idle sleep as long as that process is running:
$ caffeinate -i make

// 위의 예시와 마찬가지로,  caffeinate 라 fork 로 내가 만든 프로랠을 실행시킬 동안 sleep mode 로 진입하지 않게 해줌.
$ caffeinate -i -d java -jar ./some.jar  --spring.profiles.active=local &

// 3600 초 동안 잠자기 방지.
caffeinate -t 3600

최종

  • 하지만 위의 방법으로도 해결되지 않았던 문제가 있었음
    • mac 을 닫은채 외장 모니터를 이용해서 이용중인데, 외장 모니터의 전원을 내려버리면 sleep mode 로 전환이 되는 문제가 여전히 발생
    • 결국 아래처럼 해결함.
  • 예시

// 아래 커맨드를 입력하면 노트북을 닫아도 sleep mode로 전환되지 않는다.
sudo pmset -c disablesleep 1

// 잠자기 방지 설정 해제
아래 커맨드를 입력하면 노트북을 닫으면 정상적으로 꺼진다.
sudo pmset -c disablesleep 0

// pmset -g 로 확인가능하다. 아래 값을 보면 된다.
// disalbedsleep 0 -> 잠자기 비활성화
// disalbedsleep 1 -> 잠자기 활성화

참고자료

  • https://www.dssw.co.uk/reference/pmset/
  • https://support.apple.com/ko-kr/guide/mac-help/mchl40376151/mac
  • https://www.reddit.com/r/MacOS/comments/x70ycp/mac_sleep_modes/
  • https://ss64.com/mac/caffeinate.html

Tags:

Categories:

Updated: