· 톺아보기

기타

맥, 재부팅시에 특정 어플을 종료했다가 다시 실행하기.

암스원 ·

조회 8,466 · 공감 2 · 댓글 3

저는 맥에서 BTT를 사용하는데요, 요즘 실행이 되어 있어도 먹통이 경우가 종종 있었습니다. 

그래서 매번 재실행을 했는데, 잠자기 이후에 자동으로 재실행 되면 좋을 것 같아서 책지피티에 물어 봤더니 알려주더라고요. 

제대로된 실행도 가능했습니다.

그래서 여기에 올려두면 도움이 될것 같아서 올립니다. 



  

맥에서는 “잠자기 해제(wake)” 이벤트를 감지해서 원하는 앱을 자동으로 종료 후 재실행하도록 만들 수 있습니다.
가장 안정적인 방법은 sleepwatcher + shell script + launchd 조합입니다.

아래 순서대로 하면 됩니다.


1. SleepWatcher 설치

터미널 실행 후 입력:

brew install sleepwatcher

설치 확인:

sleepwatcher --version

2. Wake 스크립트 만들기

홈 폴더에 스크립트 생성:

nano ~/.wakeup_apps.sh

예시 내용 입력:

#!/bin/zsh

# 앱 종료
osascript -e 'quit app "앱이름"'

sleep 3

# 앱 다시 실행
open -a "앱이름"
예를 들어 크롬이면:
#!/bin/zsh

osascript -e 'quit app "Google Chrome"'

sleep 3

open -a "Google Chrome"

저장:

  • Ctrl + O
  • 엔터
  • Ctrl + X

3. 실행 권한 부여

chmod +x ~/.wakeup_apps.sh

4. Wake 이벤트 연결

SleepWatcher 설정:

echo "~/.wakeup_apps.sh" > ~/.wakeup

5. SleepWatcher 자동 실행 등록

brew services start sleepwatcher

확인:

brew services list

started 상태면 정상입니다.


6. 테스트 방법

맥을 잠자기 → 다시 깨우기.

자동으로:

  1. 앱 종료
  2. 3초 대기
  3. 앱 재실행

됩니다.


여러 앱 동시에 재실행하는 방법

예시:

#!/bin/zsh

osascript -e 'quit app "Google Chrome"'
osascript -e 'quit app "Discord"'
osascript -e 'quit app "Slack"'

sleep 5

open -a "Google Chrome"
open -a "Discord"
open -a "Slack"

강제 종료까지 하고 싶다면

앱이 잘 안 꺼질 경우:

pkill "Google Chrome"

또는:

killall "Google Chrome"

사용 가능.

예시:

#!/bin/zsh

killall "Google Chrome"

sleep 5

open -a "Google Chrome"


가장 실전적인 추천 방식

크롬 / 디스코드 / 슬랙 / Docker 같은 앱은:

killall "앱명"
sleep 5
open -a "앱명"

이 방식이 제일 안정적입니다.


현재 등록 상태 확인

cat ~/.wakeup

삭제 방법

자동 실행 중지:

brew services stop sleepwatcher

설정 삭제:

rm ~/.wakeup
rm ~/.wakeup_apps.sh


실행하려는 앱이 BTT임으로 아래의 사항을 참고해 주세요. 

그럼  BetterTouchTool 공식 사이트 의 앱 이름만 정확히 넣으면 됩니다.
맥 내부 앱 이름은 "BetterTouchTool" 입니다.

가장 안정적인 설정 예시는 아래입니다.


1. wake 스크립트 수정

터미널:

nano ~/.wakeup_apps.sh

내용:

#!/bin/zsh

# BetterTouchTool 강제 종료
killall "BetterTouchTool"

# 완전히 종료될 때까지 대기
sleep 5

# 다시 실행
open -a "BetterTouchTool"

저장:

  • Ctrl + O
  • 엔터
  • Ctrl + X

2. 실행 권한 확인

chmod +x ~/.wakeup_apps.sh

3. wake 이벤트 연결 확인

cat ~/.wakeup

결과가 아래처럼 나오면 정상:

~/.wakeup_apps.sh

없다면:

echo "~/.wakeup_apps.sh" > ~/.wakeup

4. SleepWatcher 실행 상태 확인

brew services list

여기서:

sleepwatcher started

면 정상.

아니면 실행:

brew services start sleepwatcher

5. 직접 테스트

잠자기 없이 바로 테스트하려면:

~/.wakeup_apps.sh

실행 시:

  1. BetterTouchTool 종료
  2. 5초 대기
  3. 자동 재실행

되면 성공입니다.


실제로 많이 쓰는 개선 버전

BetterTouchTool이 늦게 뜨는 경우:

#!/bin/zsh

killall "BetterTouchTool"

# 프로세스 완전 종료 대기
while pgrep "BetterTouchTool" > /dev/null
do
    sleep 1
done

sleep 2

open -a "BetterTouchTool"

이 방식이 더 안정적입니다.

출처 : 챗GPT

댓글 3

  1. 펑키펭귄 · · 공감 1
    저도 요즘들어서 BTT 이슈가 많아졌네요. 잠자기 후에 다시 켰을 때 그런 것 같은데 그냥 버전 업 기다리고 있었습니다. 좋은 정보 감사합니다.
  2. 암스원 ·
    @펑키펭귄님 btt가 너무 자주 꺼지거나 먹통이 되긴 하는거 같습니다 .
  3. 펑키펭귄 ·
    전, sleepwatcher 없이 수동으로 Karabiner 에서 직접 실행할 수 있게 만들었는데,
    이게 조금 더 안정적이라고 해서 공유합니다.

    #!/bin/zsh

    killall "BetterTouchTool" 2>/dev/null
    killall "BTTRelaunch" 2>/dev/null

    while pgrep "BetterTouchTool" >/dev/null || pgrep "BTTRelaunch" >/dev/null
    do
    sleep 1
    done

    sleep 2
    open -a "BetterTouchTool"

    ======

    Karabiner 에서는

    {
    "description": "Restart BetterTouchTool with Cmd+Opt+Ctrl+Shift+.",
    "manipulators": [
    {
    "type": "basic",
    "from": {
    "key_code": "period",
    "modifiers": {
    "mandatory": ["command", "option", "control", "shift"]
    }
    },
    "to": [
    {
    "shell_command": "/bin/zsh ~/.config/karabiner/scripts/restart-btt.sh"
    }
    ]
    }
    ]
    }

자료실 최근 글

자료실 목록 더 보기