프로젝트별로 보는 개발 서버와 열린 포트.
Vitals는 실행 중인 것을 시작된 프로젝트 폴더별로 묶고, 각각이 쓰고 있는 포트를 보여 줍니다. 화요일부터 아무 일도 하지 않은 개발 서버를 짚어 중단할지 묻고, 직접 허락하기 전에는 아무것도 중단하지 않습니다.
수치는 시뮬레이션입니다. 웹 페이지는 Mac을 읽을 수 없고, 읽어서도 안 됩니다.
명령이 아니라 실행 중인 폴더별로 묶습니다.
같은 프로젝트 폴더에서 시작된 것은 모두 폴더 이름이 붙은 한 행이 되고, 전체 메모리와 CPU, 수신 대기 중인 모든 포트가 함께 표시됩니다. 그래서 node라는 이름의 세 가지가 storefront, api, docs가 됩니다.
- 프로젝트마다 폴더 이름이 붙은 한 행
- 각 프로세스의 메모리와 CPU
- 수신 대기 중인 모든 포트를 해당 프로세스 옆에
- Compose 컨테이너도 해당 프로젝트 아래에
터미널 없이 포트 3000에 무엇이 있는지.
“이미 사용 중”인 포트에 Vitals가 이름을 붙여 줍니다. 그 포트를 쓰는 프로세스, 그 프로세스가 속한 프로젝트, 그리고 중단 버튼. ⌘F에 번호를 입력하면 끝입니다. lsof도 kill도 필요 없습니다.
- 포트를 쓰는 프로세스 옆에 포트 표시
- ⌘F를 누르고 번호를 입력하면 바로 찾음
- 누구의 것인지: 내 것, 데이터베이스, 앱의 도우미 프로세스
- 어시스턴트가 MCP로 물어볼 수 있음
잊고 있던 서버를 얼마나 오래됐는지와 함께 짚어 줍니다.
며칠째 아무 일도 하지 않은 개발 서버에는 얼마나 오래됐는지 알려 주는 메모가 붙고, 중단하면 무엇이 확보되는지와 함께 중단을 제안합니다. 직접 확인하기 전에는 아무것도 중단하지 않으며, 프로젝트 전체를 한 번에 종료할 수도 있습니다.
- 며칠째 유휴 상태면 알려 줌
- 확보되는 자원과 함께 중단 제안
- 프로젝트 전체를 한 번에 종료
- 응답하지 않는 것은 강제 종료
메뉴 막대에서 포트를 찾고 서버를 중단합니다.
드롭다운에도 같은 프로젝트와 포트가 담긴 같은 프로젝트 탭이 있어서, 흔한 문제는 윈도우를 열지 않고 클릭 두 번으로 해결됩니다.
- 드롭다운에도 같은 프로젝트와 포트
- 확인을 거쳐 거기서 바로 중단
- 알아서 중단되는 것은 없음
- 신뢰하는 폴더에서는 어시스턴트의 안전한 요청을 바로 처리
개발 서버와 포트, 전과 후
프로젝트마다 실행 중인 것이 남습니다. 화요일에 띄운 개발 서버, 로컬에서 돌고 있는 줄 잊은 데이터베이스, 닫은 탭의 테스트 감시 프로세스. 활성 상태 보기에서는 node와 python이라는 이름의 행 십여 개일 뿐이고, 각각이 쓰는 포트는 아예 나오지 않습니다. 포트를 보려면 터미널을 열고 lsof -i :3000을 입력한 다음 번호로 kill해야 합니다.
그래서 포트 3000을 쓰는 두 번째 프로젝트는 시작되지 않고, Mac은 이유도 모른 채 뜨거워지며, 해결책은 짐작에 기댈 수밖에 없습니다.
프로젝트 탭은 프로세스를 실행 중인 프로젝트 폴더별로 묶어 폴더 이름을 붙이고, 전체 메모리와 CPU, 수신 대기 중인 모든 포트를 함께 보여 줍니다. 며칠째 아무 일도 하지 않은 개발 서버는 얼마나 오래됐는지와 함께 짚어 주고 중단을 제안합니다. 프로젝트 전체를 한 번에 종료하거나, 응답하지 않는 프로세스 하나를 강제 종료할 수 있으며, 직접 확인하기 전에는 아무것도 중단하지 않습니다. 그 폴더에서 docker compose로 시작한 컨테이너도 프로젝트 아래에 표시되고, 어시스턴트가 포트에 무엇이 있는지 물어볼 수 있습니다.
Vitals에서 찾기
탭, 메뉴 막대 항목, 설정을 손이 가는 순서대로 정리했습니다.
- 01
프로젝트 탭 열기
각 프로젝트는 폴더 이름이 붙은 한 행이며, 프로세스, 포트, 전체 메모리와 CPU가 함께 표시됩니다. 프로젝트를 열면 각 프로세스와 수신 대기 포트를 볼 수 있습니다.
- 02
포트에 무엇이 있는지 찾기
포트는 그 포트를 쓰는 프로세스 옆에 있습니다. ⌘F를 누르고 번호를 입력하면 해당 프로젝트와 프로세스를 알려 줍니다.
- 03
잊고 있던 서버 중단하기
며칠째 아무 일도 하지 않은 서버에는 얼마나 오래됐는지 알려 주는 메모가 붙습니다. 그 서버를 중단하거나, 프로젝트 전체를 종료하거나, 응답하지 않는 프로세스 하나를 강제 종료하세요. Vitals는 먼저 묻고, 무엇이 닫히는지 알려 줍니다.
- 04
어시스턴트로 물어보기
MCP로 포트 8080에 무엇이 있는지, 어떤 프로젝트에서 개발 서버가 돌고 있는지 물어볼 수 있습니다. 신뢰하는 프로젝트 폴더에서는 안전한 종료 요청을 묻지 않고 처리할 수 있습니다. 설정 → 연동에서 폴더를 추가하세요.
알아 둘 용어
수치의 의미를 활성 상태 보기 용어집에서 가져왔습니다.
- 수신 대기 포트
수신 대기 포트는 포트 3000의 웹 서버처럼 프로세스가 들어오는 연결을 기다리는 네트워크 포트입니다.
- PID
PID(프로세스 ID)는 macOS가 실행 중인 각 프로세스를 구별하려고 붙이는 번호입니다.
- 좀비 프로세스
좀비 프로세스는 실행을 마쳤지만 상위 프로세스가 아직 종료 상태를 거둬 가지 않아 프로세스 테이블에 항목이 남아 있는 프로세스입니다.
- 강제 종료
강제 종료는 앱이나 프로세스가 저장하거나 정리할 틈을 주지 않고 즉시 끝냅니다.
- launchd
launchd는 macOS가 시동할 때 가장 먼저 시작하는 프로세스로, 프로세스 ID가 1입니다.
문의
개발 서버와 포트에 대해 구입 전에 자주 묻는 질문.
Vitals는 프로세스가 어느 프로젝트에 속하는지 어떻게 아나요?
프로세스가 시작된 폴더로 압니다. 같은 프로젝트 폴더에서 시작된 프로세스는 그 폴더 이름으로 함께 묶입니다.
Vitals가 개발 서버를 알아서 중단하나요?
아니요. 며칠째 유휴 상태인 서버를 짚어 주고 중단할지 제안합니다. 직접 확인하기 전에는 아무것도 중단하지 않습니다.
내가 실행하지 않은 앱이 쓰는 포트도 보여 주나요?
네. 수신 대기 중인 모든 포트를 그 포트를 쓰는 프로세스와 함께 나열합니다. 내 개발 서버든, 데이터베이스든, 앱의 도우미 프로세스든 마찬가지입니다.
Docker와 함께 쓸 수 있나요?
컨테이너는 포트와 함께 별도의 탭에 표시됩니다. 프로젝트 폴더에서 docker compose로 시작한 컨테이너는 해당 프로젝트 아래에도 표시됩니다.
무엇을 프로젝트로 보나요?
프로세스가 시작된 폴더입니다. 같은 폴더에서 시작된 것은 모두 하나의 프로젝트이며, 그 폴더 이름이 붙습니다.
프로젝트 전체를 한 번에 종료할 수 있나요?
네. 프로젝트를 종료하면 확인을 거친 뒤 그 안의 모든 프로세스가 닫힙니다. 응답하지 않는 프로세스는 강제 종료할 수 있습니다.
포트가 이미 사용 중이라고 나오는 이유는 무엇인가요?
다른 프로세스가 그 포트에서 수신 대기 중이기 때문이며, 대개 이전 세션의 서버입니다. 프로젝트 탭에서 그 프로세스와 속한 프로젝트를 알려 주고, 중단할지 제안합니다.
컨테이너도 프로젝트의 일부로 보나요?
프로젝트 폴더에서 docker compose로 시작한 컨테이너는 해당 프로젝트 아래에 표시되고, 컨테이너 탭에도 자체 수치와 함께 표시됩니다.
더 읽어 보기
이 기능을 쓰는 가이드, 그리고 같은 용도로 많이 사는 앱과 Vitals의 비교.