웹사이트 검색

/proc - Linux 프로세스 및 하드웨어 정보 가져오기


오늘은 /proc 디렉토리의 기능을 더 잘 이해하기 위해 디렉토리의 내용을 자세히 살펴보겠습니다. /proc 디렉터리는 버전이나 아키텍처에 관계없이 모든 Linux 배포판에서 공통적으로 사용되는 기능이라는 점을 기억하는 것이 중요합니다.

우리가 즉시 명확히 해야 할 한 가지 오해는 /proc 디렉토리가 전통적인 의미의 전통적인 파일 시스템이 아니라는 것입니다.

procfs 내의 프로세스 및 기타 시스템 관련 데이터에 대한 정보를 포함하는 가상 파일 시스템입니다. 이 파일 시스템은 /proc 디렉토리에 매핑되며 시스템 부팅 프로세스 중에 마운트됩니다.

Linux에서 /proc란 무엇입니까?

/proc 파일 시스템은 커널 데이터 구조 및 런타임 정보에 대한 인터페이스 역할을 하며, 이를 통해 사용자와 애플리케이션 모두 프로세스, 시스템 구성, 하드웨어 등에 대한 자세한 정보에 액세스할 수 있습니다. 이 데이터는 가상 파일 계층을 통해 전달됩니다.

/proc 파일 시스템에 있는 파일 및 디렉터리의 전체 목록을 보려면 표시된 대로 ls 명령을 사용할 수 있습니다.

ls /proc

Linux에서 /proc 탐색

/proc 디렉토리로 이동하면 친숙한 파일과 시스템에서 실행 중인 프로세스에 해당하는 번호가 매겨진 디렉토리 전체가 있다는 것을 알 수 있습니다.

cd /proc
ls

번호가 매겨진 이러한 디렉터리는 프로세스 ID(PID)로 더 잘 알려진 프로세스와 그 안에 있는 프로세스를 차지하는 명령을 나타냅니다. 파일에는 메모리(meminfo), CPU 정보(cpuinfo) 및 사용 가능한 파일 시스템과 같은 시스템 정보가 포함되어 있습니다.

다음은 접하게 될 몇 가지 주요 파일과 디렉터리입니다.

  • /proc/cpuinfo – 모델, 속도, 코어 수 등 시스템의 CPU에 대한 정보를 나열합니다.
  • /proc/meminfo – 총 메모리 양, 사용 가능한 메모리 및 각 프로세스에서 사용하는 메모리를 포함하는 메모리 사용량 및 통계에 대한 세부 정보를 나열합니다.
  • /proc/filesystems – 커널에서 지원하는 모든 파일 시스템 목록이 포함되어 있습니다.
  • /proc/sys – 커널의 구성 및 런타임 매개변수를 나열합니다.
  • /proc/loadavg – 1분, 5분, 15분 등 다양한 시간 간격에 따른 시스템 로드 평균을 표시합니다.
  • /proc/self – 프로세스 자체 디렉터리에 대한 심볼릭 링크입니다.
  • /proc/stat – 실행 중인 프로세스 수, 인터럽트 수, 각 CPU 상태에서 소요된 시간 등 시스템에 대한 다양한 통계가 포함되어 있습니다.
  • /proc/uptime – 시스템이 실행된 시간을 포함합니다.
  • /proc/PID – 특정 프로세스에 대한 정보가 포함되어 있습니다. 여기서 PID는 프로세스 ID입니다.

시스템 정보 추출

/proc/meminfo는 Linux 시스템의 메모리 사용량 및 통계에 대한 정보를 표시하는 데 사용됩니다. 여기에는 시스템 성능 및 리소스 활용도를 모니터링하는 데 유용할 수 있는 다양한 메모리 관련 측정항목의 스냅샷이 포함되어 있습니다. .

cat /proc/meminfo

보시다시피, /proc/meminfo에는 사용 가능한 총 용량(kb 단위)과 상위 2개의 여유 용량을 포함하여 시스템 메모리에 대한 다양한 정보가 포함되어 있습니다. 윤곽.

/proc에 있는 파일에 대해 cat 명령을 실행하면 해당 내용이 출력됩니다. 모든 파일에 대한 정보는 다음을 실행하여 매뉴얼 페이지에서 확인할 수 있습니다.

man 5 /proc/<filename>

/proc의 파일에 대해 간략하게 설명하겠습니다.

  • /proc/cmdline – 커널 명령줄 정보.
  • /proc/console – tty를 포함한 현재 콘솔에 대한 정보.
  • /proc/devices – 현재 실행 중인 커널용으로 구성된 장치 드라이버입니다.
  • /proc/dma – 현재 DMA 채널에 대한 정보입니다.
  • /proc/fb – 프레임 버퍼 장치.
  • /proc/filesystems – 커널이 지원하는 현재 파일 시스템입니다.
  • /proc/iomem – 기기의 현재 시스템 메모리 맵입니다.
  • /proc/ioports – 기기와의 입출력 통신을 위해 등록된 포트 영역입니다.
  • /proc/loadavg – 시스템 로드 평균.
  • /proc/locks – 현재 커널에 의해 잠긴 파일입니다.
  • /proc/meminfo – 시스템 메모리에 대한 정보(위 예 참조)
  • /proc/misc – 기타 주요 장치에 등록된 기타 드라이버입니다.
  • /proc/modules – 현재 로드된 커널 모듈입니다.
  • /proc/mounts – 시스템에서 사용 중인 모든 마운트 목록입니다.
  • /proc/partitions – 시스템에서 사용할 수 있는 파티션에 대한 자세한 정보입니다.
  • /proc/pci – 모든 PCI 장치에 대한 정보입니다.
  • /proc/stat – 마지막 재부팅부터 유지되는 기록 또는 다양한 통계입니다.
  • /proc/swap – 스왑 공간에 대한 정보입니다.
  • /proc/uptime – 가동 시간 정보(초)입니다.
  • /proc/version – 커널 버전, gcc 버전 및 Linux 배포판이 설치되었습니다.

프로세스 정보 추출

/proc의 번호가 매겨진 디렉토리 내에서 몇 개의 파일링크를 찾을 수 있습니다. 이러한 디렉터리의 번호는 해당 디렉터리 내에서 실행되는 명령의 PID와 상관관계가 있다는 점을 기억하세요.

예를 들어 /proc/로 이동하면 다음과 같은 세부정보가 제공됩니다.

  • /proc//cmdline – 프로세스를 시작하는 데 사용되는 명령줄 인수입니다.
  • /proc//status – 메모리 사용량 및 프로세스 통계를 포함한 자세한 상태 정보입니다.
  • /proc//fd – 프로세스에서 열린 파일에 대한 심볼릭 링크입니다.

예를 들어 /proc/12라는 폴더를 살펴보겠습니다.

cd /proc/12
ls

내가 실행하면 :

cat /proc/12/status

나는 다음을 얻습니다 :

그렇다면 이것은 무엇을 의미합니까? 음, 중요한 부분은 맨 위에 있습니다. 상태 파일을 보면 이 프로세스가 rcu_tasks_rude_kthread에 속해 있음을 알 수 있습니다. 현재 상태는 유휴이고 프로세스 ID는 당연히 12입니다.

또한 UIDGID0이므로 누가 이를 실행하고 있는지 확인할 수 있으며 이는 이 프로세스가 루트에 속함을 나타냅니다. 강한> 사용자.

번호가 매겨진 모든 디렉토리에는 비슷한 파일 구조가 있으며 설명과 함께 가장 중요한 파일 구조는 다음과 같습니다.

  • cmdline – 프로세스의 명령줄
  • environ – 환경 변수
  • fd – 파일 설명자
  • 한도 – 프로세스 한도에 대한 정보를 포함합니다.
  • 마운트 – 관련 정보

또한 번호가 매겨진 디렉토리에 여러 링크가 있음을 알 수 있습니다.

  • cwd – 프로세스의 현재 작업 디렉터리에 대한 링크
  • exe – 프로세스 실행 파일에 대한 링크
  • 루트 – 프로세스의 작업 디렉터리에 대한 링크

이를 통해 /proc 디렉토리에 익숙해지는 데 도움이 될 것입니다. 또한 uptime, lsof, mount 및 ps와 같은 여러 명령이 정보를 얻는 방법에 대한 통찰력을 제공해야 합니다.