블로그로 돌아가기

macOS에서 프로세스를 모니터링하는 방법: 개발자를 위한 완벽 가이드

Activity Monitor를 넘어 macOS 프로세스를 모니터링하고 검사하고 관리하는 방법을 알아보세요. 프로세스 트리와 PID부터 환경 변수와 코드 서명까지 다룹니다.

모든 macOS 개발자는 결국 똑같은 답답함에 부딪힙니다. Activity Monitor는 어떤 프로세스가 CPU를 잡아먹고 있다고 보여주지만, 그런지 알아낼 만한 실질적인 데이터는 거의 주지 않습니다. 이 가이드는 macOS에서 프로세스를 모니터링하는 데 알아야 할 모든 것을, 기초부터 실제 디버깅에 도움이 되는 고급 기법까지 다룹니다.

빠른 요약

macOS에서 프로세스를 효과적으로 모니터링하려면, 빠른 리소스 확인에는 Activity Monitor를, 근본 원인 분석에는 ProcXray나 터미널 도구를 사용하세요. 핵심적인 향상은 프로세스 트리, 실행 컨텍스트, 환경 변수, 그리고 수명이 짧은 하위 프로세스를 들여다볼 수 있는 가시성입니다.

프로세스란 무엇인가?

macOS에서는 실행 중인 모든 프로그램이 고유한 **프로세스 ID(PID)**를 가진 _프로세스_입니다. 브라우저를 열면 macOS는 부모 프로세스를 생성하고, 이 프로세스가 다시 수십 개의 자식 프로세스(렌더러 프로세스, GPU 프로세스, 확장 프로세스 등)를 생성할 수 있습니다. 이 계층 구조를 이해하는 것이 효과적인 모니터링의 첫걸음입니다.

기본: Activity Monitor

Apple에 기본 내장된 Activity Monitor(/Applications/Utilities/Activity Monitor.app)는 다음을 제공합니다.

가벼운 사용에는 괜찮습니다. 하지만 개발자에게는 거의 즉시 한계를 드러냅니다.

Activity Monitor가 할 수 없는 것

개발자로서 금방 부딪히게 되는 한계는 다음과 같습니다.

프로세스 트리 보기 없음. Activity Monitor는 평면 목록만 보여줍니다. 셸 스크립트가 다섯 개의 헬퍼 프로세스를 생성하고 그들이 다시 자식을 생성하면 그저 혼란스러울 뿐입니다. 무엇이 무엇을 생성했는지 알 수 없습니다.

환경 변수 없음. 프로세스 내부에서 NODE_ENVDYLD_LIBRARY_PATH가 왜 잘못되었는지 디버깅할 때, 프로세스가 실제로 어떤 환경으로 실행되었는지 검사할 방법이 없습니다.

실시간 정규식 검색 없음. 300개의 프로세스를 이름으로 필터링하려면 신중하게 타이핑해야 하고, 그마저도 자주 초기화됩니다.

수명이 짧은 프로세스는 보이지 않음. 빌드 시스템이 밀리초 단위로 컴파일러 프로세스를 띄우고 내린다면? Activity Monitor는 절대 잡아내지 못합니다.

명령줄 사용하기

ps, top, lsof, dtrace는 일부 빈틈을 메워 줍니다.

# 프로세스 트리 표시
ps auxf

# 프로세스가 연 모든 파일 나열
lsof -p <PID>

# 프로세스의 환경 변수 표시
ps eww -p <PID>

이 도구들은 강력하지만 다루기 번거롭습니다. ps eww는 환경을 읽기 힘든 텍스트 덩어리로 쏟아냅니다. lsof의 출력은 수천 줄에 달할 수 있습니다.

더 나은 방법: ProcXray

ProcXray는 Activity Monitor가 제공하는 것 이상이 필요한 개발자를 위해 특별히 만들어진 네이티브 macOS 앱입니다. 실제로 필요한 데이터를 드러내 줍니다.

프로세스 트리 보기

평면 목록과 실시간 프로세스 트리 사이를 전환하세요. 부모-자식 관계를 즉시 확인할 수 있어, 셸 스크립트, 빌드 도구, 또는 Chrome이나 Electron 같은 다중 프로세스 앱을 디버깅할 때 결정적입니다.

환경 변수 검사기

아무 프로세스나 클릭한 뒤 Environment 탭으로 전환하세요. 프로세스가 실행될 때 설정된 모든 환경 변수가 나열되고, 검색할 수 있으며, JSON으로 복사할 수 있습니다. 더 이상 ps eww를 파싱할 필요가 없습니다.

실시간 정규식 검색

정규식 패턴을 입력하면 프로세스 이름, PID, 명령줄 인자, 경로 전반에서 목록이 즉시 필터링됩니다. node.*serverpython3.*manage를 밀리초 만에 찾아냅니다.

수명이 짧은 프로세스 캡처

ProcXray는 새로 생성된 프로세스를 초록색으로 강조하고, 종료된 프로세스를 설정 가능한 시간 동안 빨간색으로 유지합니다. Activity Monitor가 새로고침되기도 전에 사라지던 일시적인 컴파일러와 링커 프로세스를 드디어 볼 수 있습니다.

코드 서명 검증

보안 감사를 위해 ProcXray는 각 프로세스가 서명되었는지, 누가 서명했는지, 어떤 권한(entitlements)을 가지고 있는지를 터미널을 전혀 건드리지 않고 보여줍니다.

무엇을 언제 사용할까

상황도구
빠른 CPU/메모리 확인Activity Monitor
폭주하는 프로세스 디버깅ProcXray
프로세스 환경 검사ProcXray
무엇이 프로세스를 생성했는지 찾기ProcXray
서명되지 않은 프로세스 보안 감사ProcXray
스크립트/자동화 모니터링ps, top, dtrace

시작하기

ProcXray 다운로드 — 무료이며, 코드 서명과 Apple 공증을 받았습니다. Apple Silicon 또는 Intel에서 macOS 14(Sonoma) 이상이 필요합니다.

설치하고 나면, 매일 쓰던 Activity Monitor 습관을 실제로 더 빠르게 일하도록 돕는 도구로 바꿔 줍니다.

자주 묻는 질문

의심스러운 프로세스가 무엇에서 생성되었는지 찾는 가장 빠른 방법은?

실시간 프로세스 트리를 사용하세요. 부모-자식 관계가 어떤 셸 스크립트, 빌드 단계, 또는 앱 구성 요소가 그 프로세스를 실행했는지 즉시 드러내 줍니다.

macOS에서 프로세스의 환경을 어떻게 검사하나요?

터미널에서 ps eww -p <PID>를 사용할 수 있지만, 변수가 많은 경우나 반복적인 인시던트 분석에는 보통 UI 기반 환경 검사가 더 빠릅니다.

개발자는 Activity Monitor를 완전히 끊어야 할까요?

아닙니다. 가벼운 확인에는 Activity Monitor를 그대로 쓰고, 계보, 실행 인자, 환경 데이터, 보안 컨텍스트가 필요할 때 더 깊은 도구로 전환하세요.

출처 및 참고 자료