낯선 Mac 프로세스 조사하기
Activity Monitor에는 앱, 헬퍼, 에이전트, 데몬, 시스템 서비스가 함께 표시됩니다. 익숙하거나 생소한 이름만으로는 근거가 약합니다. 소프트웨어가 일반적인 이름을 공유하기도 하고, 악성 코드가 그 이름을 흉내 내기도 합니다. 프로세스는 소유자, 실행 파일 경로, 부모 프로세스, 코드 서명, 리소스 추이, 그리고 이를 유발한 동작으로 판단하세요.
보기 > 모든 프로세스를 선택하면 목록이 본인 계정으로만 제한되지 않습니다. 사용자, CPU 시간, 스레드, 종류 같은 유용한 열을 추가하세요. 프로세스를 더블클릭하면 부모, 열린 파일과 포트, 최근 통계를 확인할 수 있습니다. Apple의 Activity Monitor 가이드 에는 계층 보기와 시스템 프로세스 보기도 있습니다. 프로세스 샘플은 바로 강제 종료하지 않고, 멈춘 것처럼 보일 때 스레드가 잠시 무엇을 하는지 캡처합니다.
사람들이 가장 걱정하는 것들
- kernel_task는 커널 자체이며, 여기서 CPU가 높다면 대개 macOS가 뜨거운 칩을 식히는 중입니다. 자세한 내용은 kernel_task high CPU를 참고하세요.
- WindowServer는 화면을 그립니다. 디스플레이와 창이 많을수록 부하가 커지며, WindowServer high CPU에서 다룹니다.
- mds, mds_stores, mdworker는 파일을 인덱싱하는 Spotlight이며, mds and mdworker high CPU를 참고하세요.
- Google Chrome Helper 프로세스는 Chrome의 탭과 확장 프로그램이며, Chrome Helper high CPU에서 다룹니다.
직접 시작하지 않은 백그라운드 데몬
이들은 스스로 실행되며, 대부분 정상입니다.
- launchd는 macOS가 가장 먼저 시작하는 프로세스이며 모든 서비스의 부모입니다. 항상 실행 중이며, 그것이 본래 역할입니다.
- trustd는 앱이 실행되거나 보안 연결을 맺을 때 인증서와 앱 서명을 확인합니다. 앱을 열 때 잠깐 치솟는 것은 정상입니다.
- nsurlsessiond는 백그라운드 네트워크 전송을 처리합니다. iCloud, 앱 다운로드, 업데이트 등이 해당됩니다. 동기화나 다운로드가 진행되는 동안 올라갔다가 다시 가라앉습니다.
- cloudd와 bird는 iCloud 동기화를 담당합니다. 로그인 직후나 iCloud에 파일을 많이 추가한 직후 바쁘게 동작했다가 조용해집니다.
- coreaudiod는 시스템 오디오 엔진입니다. 가볍게 유지되어야 하며, CPU가 지속해서 높다면 문제가 있는 오디오 앱이나 플러그인을 가리키는 경우가 있습니다.
- photoanalysisd는 사람·사물 인식 같은 기능을 위해 사진 콘텐츠를 분석합니다. 스케줄링은 기회주의적이며 전원, 열 상태, 라이브러리 작업에 따라 달라질 수 있습니다.
- backupd는 Time Machine 백업을 실행합니다. 백업이 진행 중일 때는 바쁘게 동작하는 것이 정상입니다.
- syspolicyd는 앱 평가를 포함한 시스템 보안 정책을 집행하는 데 도움을 줍니다. 앱 설치나 최초 실행 중의 스파이크는 맥락이 있고, 관련 없는 작업이 지속되면 여전히 측정이 필요합니다.
정상과 정체는 타이머가 아니라 패턴입니다
상관관계와 진행 상황을 보세요. 앱을 열거나, 드라이브를 연결하거나, 동기화를 시작한 뒤 올라갔다가 작업을 진행하며 가라앉는 프로세스는 그럴듯한 동작을 하는 것입니다. 진행 없이 CPU가 지속되거나, 메모리가 빠르게 늘어나거나, 크래시가 반복되거나, 같은 트리거 뒤에 스파이크가 시작되면 조사가 필요합니다. 강제 종료하기 전에 샘플, 열린 파일 활동, 로그를 비교하세요. 많은 시스템 서비스는 요청하는 앱이나 launch 정책이 여전히 필요로 하기 때문에 다시 실행됩니다.
타사 소프트웨어의 경우, 실행 파일 경로가 예상되는 앱 또는 벤더 지원 위치 안에 있는지, 서명이 해당 벤더의 것인지 확인하세요. Apple 서비스의 경우 launch 구성을 바꾸거나 삭제하는 일은 거의 해결책이 되지 않습니다. 서비스에 일을 넘기는 클라이언트, 파일 집합, 장치, 네트워크 작업을 파악하세요.
내부 구조: launchd와 온디맨드 서비스
데몬이 이렇게 많은 이유는 macOS가 가장 먼저 시작하는 프로세스(PID 1)이자 다른 모든 것의 부모인 launchd 때문입니다. 그 백그라운드 프로세스 대부분은 항상 실행되는 것이 아닙니다. launchd가 등록해 두고, 일치하는 이벤트가 발생할 때 온디맨드로 시작합니다. trustd가 필요한 보안 연결, 임포터에 전달된 파일, 앱의 XPC 메시지 같은 경우입니다. 이후 유휴 상태로 빠져나가게 합니다. 그래서 작업하는 동안 목록이 바뀌고, 하나를 강제 종료해도 대개 효과가 없습니다. 다음에 트리거가 발동하면 launchd가 다시 띄우기 때문입니다. 이 관점으로 목록 전체를 다시 보면, 누군가 선택해 실행한 프로그램 목록이 아니라, 일이 도착할 때 시스템이 시작하고 중지하는 작은 서비스 풀입니다. 그래서 존재 여부보다 시간에 따른 동작이, 뭔가 잘못되었다는 신호입니다.
설명 계층이 도움이 되는 지점
Activity Monitor가 프로세스와 인스펙터 데이터의 권위 있는 출처입니다. Mole의 Status 보기는 쉬운 설명과 추이를 더할 수 있지만, 이름에 기반한 설명은 시작 가설일 뿐입니다. 경로, 소유자, 서명, 동작이 현재 프로세스가 예상되는 것인지 결정합니다.
반복 가능한 프로세스 점검
프로세스 이름, 사용자, 경로, 부모, 서명, CPU·메모리 추이, 열린 파일, 트리거를 기록하세요. 문제가 발생할 때 샘플을 뜬 뒤, 데몬을 건드리기 전에 요청하는 앱이나 입력을 먼저 중지하세요. 이 방법은 프로세스 정의 목록만 보는 것보다, 일상적인 백그라운드 작업, 정체된 벤더 헬퍼, 위장된 이름을 훨씬 잘 구분합니다.