맥이든 위도우든 특정 기기를 처음 받거나, 포멧하여 새롭게 OS를 구성하기 시작하고, 이런 저런 프로그램들을 설치하게 되면 각종 시작 프로그램, 혹은 백그라운드 앱들이 실행되게 됩니다. MacOS 를 처음 접하면서 linux 에 대해서도 익숙하지 않은 사용자라면, ‘시작 프로그램’ 이라는 부분에 대해서 조금 생소하게 다가올 수 있습니다. 왜냐하면 윈도우의 경우에는 ctrl
+ alt
+ del
조합으로 작업관리자 호출이 가능하고, 여기서 시작 프로그램
탭을 통해 시작 프로그램에 접근이 가능합니다.
하지만 MacOS 의 경우에는 시작 프로그램 관리라는 것이 없고, 리눅스의 개념을 따라가기 때문에 이에 대한 개념이 필요합니다. Linux 와 같은 형태의 경우에는 시작 시 프로세스가 동작하게 할 수 있고, 이는 단순 Machine 의 시작을 의미하는 것이 아닌, 사용자 로그인
의 개념을 갖습니다. 모든 사용자에게 동일한 설정을 하여 시작 프로그램같은 개념을 주는 것은 가능하지만, 이는 시작 프로그램이 아니라, 모든 사용자에게 등록된 로그인 항목 이라고 이야기해야 정확합니다.
이 로그인 항목, 로그인시 시작될 프로그램(프로세스) 등으로 불리는 것들을 관리하는 방법을 정리합니다.
Common way
일반적으로, 특히 UI를 가지고 있는 프로그램의 경우에는 이러한 로그인 항목을 설정에서 관리할 수 있습니다.
시스템 설정 > 사용자 및 그룹 으로 이동하면 본인이 사용하고 있는 사용자를 비롯하여 여러가지 로그인 옵션이 보이게 되는데, 여기서 로그인 항목
이라는 부분을 선택하면 아래와 같이 시작 시 실행되는 여러 항목들을 확인할 수 있습니다. 저의 경우에는 4개의 프로그램이 보입니다.
이 중에서 원하는 항목을 선택헤 아래 -
버튼을 눌러 제거하면 됩니다.
가리기
라는 부분을 선택하면 화면에 나타나게되는 프로그램이라고 하더라도 눈에 보이지는 않고, 창이 활성화되지 않은 채로 실행됩니다만, 최근 MacOS 에서 제가 알고있는 형태로 잘 실행이 되지 않아서 별도로 설명하지는 않습니다.
Use Launchctl
그런데 위에서 설명한 로그인 항목
을 통해서 확인할 수 없는 경우도 있습니다. 예를 들어, 특정 프로그램의 자동 업데이트 확인 부분이 이에 해당합니다. 이것 말고도 백그라운드에서 어떠한 작업이 실행되는 경우에는 이 로그인 항목
부분에 나타나지 않고 백그라운드 프로세스로 실행되고 있는 경우도 있습니다. 심지어 이 형태가 훨씬 다양합니다.
이러한 프로세스를 확인하기 위해서는 터미널
에서 명령어를 이용해야 합니다. 이 때에 사용하는 명령어가 launchctl
명령어입니다.
우선 어떠한 것들이 등록되어 있는지 확인해 봅니다.
$ launchctl list
PID Status Label
- 0 com.apple.SafariHistoryServiceAgent
795 0 com.apple.progressd
1055 0 com.apple.cloudphotod
431 0 com.apple.Finder
425 0 com.apple.homed
550 0 com.apple.SafeEjectGPUAgent
- 0 com.apple.quicklook
- 0 com.apple.parentalcontrols.check
426 0 application.com.apple.MobileSMS.1152921500311916037.1152921500311916042
- 0 com.apple.PackageKit.InstallStatus
486 0 com.apple.mediaremoteagent
444 0 com.apple.FontWorker
413 0 com.apple.bird
- 0 com.apple.amp.mediasharingd
- 0 com.apple.familycontrols.useragent
- 0 com.apple.AssetCache.agent
- 0 com.apple.GameController.gamecontrolleragentd
685 0 com.apple.universalaccessAuthWarn
401 0 com.apple.nsurlsessiond
30801 0 com.apple.devicecheckd
- 0 com.apple.syncservices.uihandler
469 0 com.apple.iconservices.iconservicesagent
...
상당히 많은 프로그램들이 실행되고 있는 것을 알 수 있습니다. 이 중에서 어떠한 프로그램을 삭제하려고 한다면 특정 실행프로그램의 실행 스크립트
를 등록하거나 해제하여 처리할 수 있습니다. 이러한 실행 스크립트는 plist
라는 확장자를 갖고 있으며 다음과 같이 두 개의 경로에 존재합니다. 각각에 대해서 다음과 같이 처리하면 사용을 중지할 수 있습니다.
글로벌(어느 사용자에게나 적용) plist
/Library/LaunchAgents/
사용중지하기
$ launchctl unload -w /Library/LaunchAgents/{label}.plist
특정 사용자의 plist
/Users/유저명/Library/LaunchAgents/
사용중지하기
$ launchctl unload -w /Users/유저명/Library/LaunchAgents/{label}.plist
다시 사용하고싶다면
사용 중지 시켜놓고 보니 필요한 프로그램이어서, 다시 load 하고 싶다면 unload
대신 load
옵션을 이용하면 됩니다. 예를 들어 global 로 등록된 프로세스를 다시 등록하려면 다음과 같이 입력합니다.
$ launchctl load /Library/LaunchAgents/{label}.plist
Leave a comment