프로세스가 동작하는 동안 호출하는 시스템 콜들을 추적할 수 있는 명령어.
기본적인 명령어 동작부터 서버에 올라와 있는 애플리케이션까지 시스템 콜 추적이 가능하고, 서버내 프로세스의 이상 동작이 의심될 경우에도 strace를 통해 프로파일링을 진행한다.
주요 옵션
-s : 출력 문자열의 최댓 값. (기본=32, 최대=65535), 출력 값이 잘려서 나올 경우 해당 옵션으로 최댓 값을 주어 다시 실행
-t : timestamp, (-tt : microseconds 단위까지 출력, -ttt : 유닉스 타임)
-T : 각 시스템 콜이 호출되는데 소요된 시간을 행 끝에 출력
-f : fork()로 생성된 자식 프로세스의 시스템 콜까지 추적 (멀티 스레드, 멀티 프로세스 애플리케이션 추적 시 필요)
-o : 출력 결과를 파일로 저장 (인수로 파일명 입력)
-p : 이미 동작 중인 프로세스 추적 시 사용하는 옵션 (인수로 pid 입력)

실제 내 서버에 돌고 있는 strace 결과다. (동작 중인 프로세스에 대한 strace는 부하를 줄 수 있기 때문에 서비스 환경에서는 사용에 유의해야 한다.)
상당히 긴 json payload를 wrtie()의 인자로 들어가 호출되고 있는데, 해당 콜이 주기적으로 발생한다.
500393은 해당 서버내 돌고 있는 next.js 프로세스이고 write의 첫 번째 인자 3은 데이터를 쓰고 있는 파일의 디스크립터이다.
마지막 인자 670은 기록하고자 하는 바이트 수, =670은 기록에 성공한 바이트 수이다.
페이로드를 간단하게 보면 type : axm:monitor라고 적혀 있는데, next.js는 PM2 위에서 동작하고 있고, axm은 PM2의 모니터링을 위한 내부 모듈이다. 모니터링을 위해 주기적으로 서버 상태 메트릭을 로그로 수집하고 있기 때문에 strace에서 확인이 된다.
'Linux' 카테고리의 다른 글
| VFS (Virtual File System) (0) | 2026.01.07 |
|---|---|
| tcpdump (0) | 2026.01.06 |
| ss (Socket Statistics) (1) | 2026.01.02 |
| vmstat (0) | 2025.12.30 |
| top (0) | 2025.12.29 |