Linux 17

lsof

list open files현재 시스템에 열려 있는 모든 파일의 목록을 보여준다. 리눅스는 일반 파일뿐만 아니라 디렉토리, 디바이스, 프로세스, 소켓 등 모든 것이 파일로 표현된다.따라서 해당 명령을 이용해서 특정 파일을 점유중인 프로세스를 체크하거나, 특정 포트를 어떤 프로세스가 사용중인지 확인하는 것이 가능하다. Column 값 설명COMMAND : 파일을 열고 있는 실행 프로그램 이름PID : 프로세스 IDTID : Task ID(=Thread ID)TASKCMD : 스레드 이름USER : 파일을 연 사용자FD : File Descriptor, 프로세스가 어떤 용도, 어떤 권한으로 열었는지숫자r : 읽기 전용 (숫자는 파일 디스크립터 번호)숫자w : 쓰기 전용숫자u : 읽기 쓰기 둘다 가능cwd :..

Linux 2026.01.19

dmesg

리눅스에서 커널 링 버퍼에 기록된 메시지들을 출력하는 명령어. 커널 링 버퍼 ? 커널 메시지가 저장되는 링 구조의 버퍼, 구조 상 오래된 메시지는 새로운 메시지로 덮어씌워짐.오래전 로그를 찾으려면 journalctl를 사용해야 한다. 쉽게 말해서 시스템이 부팅 시점부터 현재까지 커널 레벨에서 발생하는 하드웨어 인식, 드라이버 로드 같은 오류 메시지들을 실시간으로 확인할 수 있다. 주요 용도1. 부팅 로그 확인 : 시스템 부팅 시 cpu, memory, 디스크 등이 정상 인식되었는지 체크2. 하드웨어 장애 진단 : NIC, Disk Error 등 확인3. 드라이버 디버깅 : 드라이버 커널 정상 로딩 확인4. 시스템 다운 원인 파악 : 프로세스 강제 종료 or 재시작 현상 원인 파악 주요 사용 옵션dmesg..

Linux 2026.01.15

VFS (Virtual File System)

가상 파일 시스템은 다양한 파일 시스템들의 인터페이스 역할을 하는 개념이다.예를 들면, 파일 시스템은 xfs, ext4, fat32 등 다양하게 한 시스템 내에 공존할 수 있는데, 서로 다른 파일 시스템에 대한 표준(?)적인 인터페이스가 없으면 개발 시 파일 접근에 대해 각각 다르게 코드가 작성되어야 한다. VFS가 서로 다른 파일 시스템들을 커널 계층해서 추상화해주는 역할을 한다. VFS가 있기 때문에 open(), write() 같은 동일한 시스템 콜로 통일해서 사용할 수 있다. VFS를 구성하는 4가지 개념1. Super Block- 특정 파일 시스템 전체에 대한 정보를 담고 있다. (크기, 마운트 정보 등...) 2. Inode- 특정 파일에 대한 메타 데이터를 담고 있다. (크기, 소유자, 권..

Linux 2026.01.07

tcpdump

네트워크 패킷 수집을 하기 위해서 tcpdump를 사용한다.애플리케이션 응답 지연 같은 네트워크 이슈를 추적하기 위해 사용한다.수집한 패킷들을 직접 훑어 볼 수도 있고 덤프 뜬 파일을 와이어샤크 툴로 분석할 수도 있다. 자주 사용하는 옵션-nn : 대표 포트를 프로토콜로 치환하지 않고 포트 번호를 그대로 보여준다.-vvv : 출력 결과에 모든 정보를 포함한다.-A : 패킷의 페이로드를 ASCII 형태로 출력한다. 평문인 경우 전송되는 데이터를 볼 수 있다.-G [시간] : 입력한 시간 값 간격으로 패킷을 수집한다. (초 단위)-w [파일명] : 수집한 패킷 내용을 파일로 지정해서 저장한다.-Z : tcpdump 실행 권한 지정host [ip] and port [port] : 지정한 ip나 port가 포함..

Linux 2026.01.06

strace

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

Linux 2026.01.05

ss (Socket Statistics)

네트워크 소켓 상태를 확인하는 도구. netstat이라는 명령어도 있는데, netstat을 대체하기 위해 개발된 툴로 훨씬 빠르고 좋다. 자주 사용하는 옵션-a : 모든 소켓 표시 (접속 대기 중인 것과 연결된 것 모두)-t : TCP 소켓만 표시-u : UDP 소켓만 표시-n : 서비스 이름 대신 포트 번호로 표시-l : Listening 상태(접속 대기 중)인 소켓만 표시-p : 해당 소켓을 사용하는 pid와 이름 표시-s : 통계 표시 자주 쓰는 형태ss -tunlp : 현재 리스닝 중인 모든 포트 확인ss -at : 현재 서버에 연결된 모든 TCP 세션 확인ss -s : 프로토콜별로 몇 개의 연결이 있는지 요약 정보 확인 필드 설명Netid : 소켓 유형 (TCP, UDP...)State : 소켓..

Linux 2026.01.02

vmstat

시스템 상에서 프로세스, 메모리, 페이징, I/O, CPU 등을 실시간으로 모니터링하기 위해 vmstat이라는 명령을 사용한다. procr : 실행 대기 중인 프로세스 수, cpu 코어 수보다 높으면 cpu 병목 체크해야 함.b : i/o 작업 등으로 인터럽트가 불가능한 대기 상태에 있는 프로세스 수. memoryswpd : swap 메모리 사용량free : 사용 가능한 여유 물리 메모리buff : 버퍼로 사용된 메모리 (i/o 작업으로 인한 임시 저장)cache : 캐시로 사용된 메모리 (파일 읽기 등 성능 향상용) swapsi (swap-in) : 스왑 영역(디스크)에서 메모리로 불러들이는 양so (swap-out) : 메모리에서 스왑 영역(디스크)로 밀어내는 양* 스왑 메모리가 사용되는 것은 ..

Linux 2025.12.30

top

top는 시스템의 전체적인 혹은 프로세스 별 리소스를 체크하기 위해 가장 널리 알려지고 간단하게 사용하는 명령어다. [상단 %Cpu(s)]us (user) : 사용자 영역 CPU- 애플리케이션, 사용자 프로세스가 사용하고 있는 cpu sy (system) : 커널 영역 CPU- 커널, 시스템 콜, 드라이버 등 시스템에서 사용하고 있는 cpu ni (nice) : nice 적용 프로세스- nice 값이 변경된 프로세스 (우선순위 변경) id (idle) : idle 상태, 놀고 있는 CPU 비율 wa (iowait) : I/O 대기- 디스크, 네트워크 I/O 대기로 인해 CPU가 쉰 시간 비율 hi (hardware irq) : 하드웨어 인터럽트로 인해 CPU가 사용된 시간 비율- NIC, disk 인터..

Linux 2025.12.29

Load Average

uptime 혹은 top 명령으로 확인할 수 있는 부하 평균 값(Load Average)은 실행 중이거나 실행을 기다리는 프로세스의 평균을 의미한다. 이것은 단순히 CPU 사용률을 의미하는 것이 아닐뿐더러, 수치를 어떻게 해석해야 할 지를 정리한다. 프로세스는 현재 상태에 따라 여러가지 상태 값을 가지는데, R, D 상태의 프로세스들이 부하 평균에 들어간다. Running / Runnable (R) : CPU에서 실행 중이거나 실행 대기 중인 프로세스Uninterruptable Sleep (D) : I/O 대기중인 프로세스 (디스크, 네트워크 등) 세 개의 값은 각각 1분, 5분, 15분 동안의 부하 평균을 의미하는데, 커널이 매 5초마다 프로세스 수를 체크해서 이동 평균값을 갱신한다. 각 수치는 CPU..

Linux 2025.12.26

interrupt와 context switch

시스템 리소스 체크 툴 중에 dstat이라는 것을 이용하면 system 항목에 int, csw라는 필드가 있다. (vmstat이나 sar로도 확인 가능하다.)각각 interrupt와 context switch 횟수를 의미한다. interrupt : 하드웨어 이벤트가 발생할 때 cpu에 전달하는 신호, 마우스 클릭, 네트워크 패킷 수신 등... context switch : CPU가 실행중인 프로세스를 중단하고, 다른 프로세스로 교체하는 과정.멀티 태스킹 환경에서 가지고 있는 cpu 보다 훨씬 많은 프로세스들이 동시에 실행되는데, 정확히는 context switch를 통해 cpu 자원을 각 프로세스들이 빠르게 교체하면서 사용한다. 네트워크 트래픽이 많아지면 당연히 int는 증가한다. NIC에서 패킷을 처..

Linux 2025.12.22