Operating System/Linux

[Linux] /proc 파일시스템의 유용한 파일들

근육곰돌이 2020. 6. 16. 14:00
728x90

1. /proc/[pid]/
  /proc에는 시스템에 존재하는 각 프로세스의 PID와 동일한 이름의 디렉토리들이 있다. 이 아래 어떤 디렉토리가 있는지 보자.

1-1. /proc/[pid]/cmdline
  해당 프로세스를 실행하기 위해 사용한 명령어를 담고 있다.

1-2. /proc/[pid]/cwd
  프로세스가 현재 작업 중인 디렉토리를 향한 심볼릭 링크다. 

1-3. /proc/[pid]/status
  프로세스의 이름, 상태, pid, ppid, 소유자 등의 정보를 담고 있다.

2. /proc/cmdline
  부팅 시 커널에 넘겨진 모든 인자들을 담고 있다.

3. /proc/cpuinfo
  아키텍쳐, 주파수, CPU의 캐쉬량 등 프로세스 관련 정보를 담고 있다.

4. /proc/filesystems
  현재 커널이 지원하는 모든 파일 시스템의 목록이 있다. nodev로 시작하는 항목은 네트워크 파일시스템이나 proc 같은 비물리적 파일시스템이다.

5. /proc/loadavg
  시스템의 평균 부하율(load average)에 대한 정보를 담고 있다. 첫 3개의 필드는 uptime으로 볼 수 있는 정보와 동일하다.
  네 번째 필드는 슬래쉬로 나눠진 2개의 숫자로 되어 있다. 첫 번째는 현재 실행 중인 프로세스/스레드 수를 나타낸다. 이 값은 시스템에 있는 프로세서 코어의 수를 넘지 않는다. 두 번째는 시스템에 있는 프로세스/쓰레드의 수를 나타낸다.
  다섯 번재 필드는 가장 최근에 생성된 프로세스의 PID 값이다. 이 부분은 주의가 필요한데 만약 'cat /proc/loadavg'라는 명령을 실행한다면 이 값이 실행된 cat 프로그램의 PID로 바뀌기 때문이다.

6. /proc/net/
  네트워킹 레이어에 대한 많은 파일이 있다. 모든 파일은 아스키로 되어 있어 읽을 수 있다.

6-1. /proc/net/arp
  arp 테이블을 담고 있다.

6-2. /proc/net/dev
  인터페이스별로 송신, 수신한 패킷 및 바이트 같은 정보가 있다.

6-3. /proc/net/route
  라우팅 테이블이 16진수 형태로 있다.

6-4. /proc/net/wireless
  품질이나 버린 패킷 수 등 현재 무선 연결과 관련된 정보를 담고 있다.

7. /proc/swaps
  사용 중인 스왑의 양과 스왑 파티션의 우선순위를 담고 있다.

8. /proc/sys/kernel/hostname
  시스템의 현재 호스트명을 담고 있다. "echo '새로운 호스트명' > /proc/sys/kernel/hostname"을 통해 변경할 수 있다.

9. /proc/sys/kernel/threads-max
  시스템에 동시에 존재할 수 있는 프로세스/쓰레드의 최대 개수를 정의하고 있다. /proc/loadavg의 네 번째 필드에 있는 현재 프로세스/쓰레드의 개수와 비교해보자.

10. /proc/sys/vm/swappiness
  커널이 얼마나 메모리를 어느 정도 스왑할지를 제어하는 값이 있다. 이 값을 높이면 커널은 더 자주 스왑을 하려고 할 것이며, 낮추면 스왑을 덜 하려고 할 것이다. 기본 값은 60이다.

11. /proc/uptime
  두 값이 있는데 첫 번째는 시스템이 시작된 후로 지난 시간(초)이며, 두 번째는 idle 상태로 보낸 시간이다. 이를 이용한 아래 명령어를 통해 idle로 존재한 시간을 백분율을 알 수 있다.
echo `cut -d' ' -f2 /proc/uptime` / `cut -d' ' -f1 /proc/uptime` | bc -l
12. /proc/vmstat
  가상 메모리 현황을 담고 있다.

13. /proc/sys/net/ipv4/conf/default/forwarding
  커널이 tcp forwarding을 허용할지를 제어한다. 디폴트 값은 0이며 포워딩 금지를 뜻한다.

반응형