맥이든 위도우든 특정 기기를 처음 받거나, 포멧하여 새롭게 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