용어집/자주 보이는 프로세스

launchd

간단한 답

launchd는 macOS가 시동할 때 가장 먼저 시작하는 프로세스로, 프로세스 ID가 1입니다. 시스템과 각 사용자를 위해 실행되는 백그라운드 서비스, 에이전트 및 그 밖의 많은 프로세스를 시작하고 관리합니다.

Mac이 시동되면 커널이 launchd를 시작하고, launchd가 거의 모든 것을 시작합니다. 앱이 서비스를 요청할 때처럼 필요할 때 서비스를 시작하기도 하고, 예기치 않게 멈춘 시스템 서비스를 다시 시작하기도 합니다.

활성 상태 보기에는 보통 PID가 1인 launchd 하나가 보입니다. 평소에는 CPU와 메모리를 아주 조금만 씁니다.

launchd의 CPU 사용량이 높게 나오는 이유

launchd 자체가 무거운 일을 하는 경우는 드뭅니다. 바빠 보인다면 대개 어떤 프로세스를 계속 다시 시작하고 있는 것입니다. 예를 들어 충돌하고 다시 실행되기를 반복하는 백그라운드 항목이 있을 수 있습니다.

활성 상태 보기에서 나타났다 사라지기를 반복하는 프로세스를 찾아보거나, 시스템 설정 > 일반 > 로그인 항목 및 확장 프로그램에서 어떤 백그라운드 항목이 실행을 허용받았는지 확인하세요. 필요 없는 백그라운드 항목을 끄는 것이 안전한 첫 단계입니다.

launchd를 종료하면 안 되는 이유

시스템 launchd는 시스템 전체의 상위 프로세스입니다. 일반적인 방법으로는 종료할 수 없고, 사용자 launchd를 멈추면 세션이 끝납니다. 대신 launchd가 계속 시작하는 프로세스를 고치세요.

launchd 뒤에 있는 로그인 항목을 찾는 방법

launchd가 바빠 보일 때 진짜 질문은 launchd가 무엇을 계속 시작하느냐입니다. 먼저 허용해 둔 백그라운드 항목부터 확인하세요.

  1. Apple 메뉴 > 시스템 설정을 선택하고, 사이드바에서 일반을 클릭한 다음 로그인 항목 및 확장 프로그램을 클릭합니다.
  2. 로그인 시 열리는 항목과 백그라운드에서 실행이 허용된 앱 목록을 훑어봅니다. 모르는 것이나 더 이상 쓰지 않는 것이 후보입니다.
  3. 항목을 하나씩 끄면서 활성 상태 보기에서 launchd를 지켜봅니다. CPU가 줄어들면 그 항목을 찾은 것입니다.
  4. 그 항목이 아직 쓰는 앱의 것이라면 앱을 업데이트하거나 앱 자체의 설정을 확인하세요. 더 이상 쓰지 않는 앱이라면, 앱에 제거 프로그램이 있으면 그것으로 제거하세요.

계속 다시 시작되는 서비스를 찾아내는 방법

충돌하고 다시 실행되는 서비스는 활성 상태 보기에 잠깐 나타났다 사라지고 새 PID로 다시 나타나는 프로세스로 보입니다. 다시 실행될 때마다 번호가 커지므로, CPU 탭을 PID 기준 높은 순으로 정렬하면 이런 프로세스를 잡아내기 쉽습니다.

터미널에서 launchctl list 명령을 실행하면 launchd가 사용자 계정용으로 로드한 작업이 세 열로 표시됩니다. 작업이 실행 중이면 PID, 마지막 종료 상태, 레이블입니다. 첫 번째 열의 대시는 그 작업이 지금 실행 중이 아니라는 뜻입니다. 음수 상태는 작업을 멈춘 신호이며, macOS가 일부러 유휴 서비스를 멈추기 때문에 많은 Apple 작업에 음수가 표시됩니다. 따라서 0이 아닌 상태 자체는 문제가 아닙니다.

의심 가는 레이블이 있으면 launchctl print gui/$(id -u)/<label> 명령을 실행합니다. 출력에 있는 runs 줄은 launchd가 그 작업을 시작한 횟수입니다. 확인할 때마다 이 숫자가 계속 늘어난다면 그 작업은 재시작 루프에 빠진 것입니다. 이 명령들은 정보를 읽기만 합니다.

타사 백그라운드 항목이 있는 위치

launchd는 몇몇 폴더에서 작업 정의를 읽습니다. Apple 자체의 작업은 /System/Library/LaunchAgents와 /System/Library/LaunchDaemons에 있으며, 이곳은 건드리지 않아야 합니다. 다른 앱이 설치한 항목은 보통 다음 폴더에 있습니다.

  • ~/Library/LaunchAgents: 현재 사용자 계정 전용 에이전트.
  • /Library/LaunchAgents: 관리자나 앱 설치 프로그램이 설치한, 모든 사용자를 위한 에이전트.
  • /Library/LaunchDaemons: 관리자나 앱 설치 프로그램이 설치한 시스템 전체 데몬.

데몬, 에이전트, XPC 서비스

launchd는 몇 가지 종류의 작업을 실행하며, 그 이름이 활성 상태 보기와 launchctl 출력에 나타납니다. 데몬은 Mac의 모든 사용자를 위해 하나만 실행되는 시스템 전체 서비스로, 인터페이스를 보여 주지 않습니다. 에이전트는 로그인한 사용자마다 따로 실행되며, 그 사용자와 상호 작용할 수 있습니다.

launchd는 앱과 프레임워크 안에 들어 있는 작은 도우미 프로그램인 XPC 서비스도 관리합니다. 앱이 그중 하나에 일을 넘기면 launchd가 필요할 때 시작하며, 활성 상태 보기에는 별도의 프로세스로 나타납니다. 앱을 쓰는 동안 낯선 이름의 프로세스가 나타났다 사라지는 이유 중 하나입니다.

자주 묻는 질문

Mac의 launchd, 무엇인가요?

macOS의 서비스 관리자입니다. 시동할 때 가장 먼저 시작되는 프로세스이며, 다른 프로세스 대부분을 시작하고 감독합니다.

launchd 프로세스가 여러 개인 이유는 무엇인가요?

시스템용(PID 1)이 하나 있고, 사용자 세션마다 추가 인스턴스가 있습니다. 정상입니다.

launchd를 강제 종료할 수 있나요?

아닙니다. 나머지 시스템을 실행하는 프로세스입니다. 바빠 보이면 계속 다시 시작되는 백그라운드 항목을 찾아보세요.

launchd는 바이러스인가요?

아닙니다. launchd는 macOS의 일부이며 항상 PID 1로 실행됩니다. 악성 코드가 launchd가 시작할 작업을 몰래 추가할 수는 있으므로, 로그인 항목 및 확장 프로그램을 확인하는 습관을 들이면 좋습니다.

launchctl list는 무엇을 보여 주나요?

launchd가 로드한 각 작업을, 실행 중이면 PID, 마지막 종료 상태, 레이블과 함께 보여 줍니다. 레이블에는 보통 회사와 제품 이름이 들어 있어, 어떤 앱이 그 작업을 설치했는지 알 수 있습니다.

LaunchAgents에서 항목을 지워도 괜찮나요?

알아볼 수 있고 더 이상 쓰지 않는 앱의 항목만 지우세요. 그보다는 로그인 항목 및 확장 프로그램에서 항목을 끄거나 앱의 제거 프로그램을 쓰는 편이 낫습니다. /System 안의 폴더에서는 절대 아무것도 지우지 마세요.

관련 항목

단계별 안내: Mac이 잠자기에 들지 않는 이유.

활성 상태 보기보다 나은 것을 찾고 있나요? Mac용 활성 상태 보기 대체 앱 추천을 확인하거나 용어집의 모든 용어를 둘러보세요.