개발을 하다보면 로컬에서 굉장히 긴 시간을 소요하는 작업을 돌려야 할 때가 있다.
예를 들어, 대량의 데이터를 처리하는 작업이나, 머신러닝 모델을 학습시킨다거나, 하는 등이다.
일반적으로는 배터리 옵션에 들어가서 “디스플레이가 꺼져 있을 때 전원 어댑터 사용 시 컴퓨터를 자동으로 잠자지 않게 하기” 옵션을 체크하면 된다.
그런데, 전원 어댑터를 사용하지 못하는 상황이거나, 잠자기를 해두고 싶은 경우에는 돌아가던 스크립트가 중단되는 경우가 생길 수 있다.
이를 방지해주는 방법으로는 caffeinate
명령어를 사용할 수 있다.
caffeinate 명령어는 MacOS에서 제공하는 명령어로, 시스템이 잠자기 모드로 전환되지 않도록 하는 기능을 제공한다.
이런 명령어를 만들게 아니라, 옵션으로 제공하면 되는게 아닐까 싶긴하다
사용법
caffeinate
명령어의 기본적인 포맷은 다음과 같다.
caffeinate [options] [command]
command
는 실행할 명령어를 지정하는 부분으로, 이 부분을 생략하면 caffeinate 명령어가 실행된 상태로 시스템이 잠자기 모드로 전환되지 않도록 한다.
만약 python
스크립트를 실행하고 싶다면 다음과 같이 명령어를 작성하면 된다.
caffeinate python script.py
이렇게 하면, script.py
가 실행되는 동안 시스템이 잠자기 모드로 전환되지 않도록 한다.
옵션
caffeinate
명령어는 여러 가지 옵션을 제공한다.
-d
: 명령어 실행 중에는 디스플레이가 꺼지지 않도록 한다.-i
: 명령어 실행 중에는 시스템이 절전 모드로 전환되지 않도록 한다.-m
: 명령어 실행 중에는 시스템이 하드 디스크를 절전 모드로 전환되지 않도록 한다.-s
: 전원 어댑터 사용 시에 시스템이 잠자기 모드로 전환되지 않도록 한다.-t <timeout>
: 지정한 시간(초) 동안 시스템이 잠자기 모드로 전환되지 않도록 한다. 이 옵션을 사용하면, 지정한 시간이 지나면caffeinate
는 종료된다.-u
: 사용자가 활성 상태임을 시스템에 알리는 역할을 한다. 마치 사용자가 키보드나 마우스를 사용하고 있는 것처럼 시스템에 알린다.- 일반적으로
-t
옵션과 함께 사용되며,-t
를 기입하지 않은 경우 디폴트 5초로 timeout이 설정된다.
- 일반적으로
-w <pid>
: 지정한 프로세스 ID(PID)가 종료될 때까지 시스템이 잠자기 모드로 전환되지 않도록 한다.