리눅스에서 "모든 것이 파일"이란 무엇입니까?

0
514

image

Linux 및 기타 UNIX와 유사한 운영 체제의 정의 기능 중 하나는 “모든 것이 파일입니다”라는 것입니다. 이것은 지나치게 단순화 된 것이지만 그 의미를 이해하면 Linux 작동 방식을 이해하는 데 도움이됩니다.

Linux의 많은 것들이 파일 시스템에 나타나지만 실제로는 파일이 아닙니다. 하드웨어 장치, 시스템 정보 및 난수 생성기를 포함한 기타 사항을 나타내는 특수 파일입니다.

이러한 특수 파일은 장치를 나타내는 특수 파일을 포함하는 / dev 및 시스템 및 프로세스 정보를 나타내는 특수 파일을 포함하는 / proc와 같은 가상 또는 가상 파일 시스템에있을 수 있습니다.

/ proc

예를 들어 CPU에 대한 정보를 찾고 싶다고 가정 해 보겠습니다. / proc 디렉토리에는이 정보가 들어있는 특수 파일 인 / proc / cpuinfo가 있습니다.

image

CPU 정보를 알려주는 특별한 명령이 필요하지 않습니다. 일반 텍스트 파일과 함께 작동하는 표준 명령을 사용하여이 파일의 내용을 읽을 수 있습니다. 예를 들어, 다음 명령을 사용할 수 있습니다 고양이 / proc / cpuinfo 이 파일의 내용을 터미널에 인쇄하려면 – CPU 정보를 터미널에 인쇄하십시오. 텍스트 편집기에서 / proc / cpuinfo를 열어 내용을 볼 수도 있습니다.

/ proc / cpuinfo는 실제로이 정보를 포함하는 텍스트 파일이 아닙니다. Linux 커널과 proc 파일 시스템은이 정보를 파일로 노출시킵니다. 이를 통해 익숙한 도구를 사용하여 정보를보고 작업 할 수 있습니다.

image

/ proc 디렉토리에는 다음과 같은 다른 유사한 파일도 포함되어 있습니다.

  • / proc / uptime – Linux 커널의 가동 시간을 표시합니다. 다시 말하면 시스템을 종료하지 않고 얼마나 오랫동안 사용했는지입니다.
  • / proc / version – Linux 커널 버전을 노출합니다.

/ dev

/ dev 디렉토리에는 장치를 나타내는 파일과 다른 특별한 것을 나타내는 파일이 있습니다. 예를 들어, / dev / cdrom은 CD-ROM 드라이브입니다. / dev / sda는 첫 번째 하드 드라이브를 나타내고 / dev / sda1은 첫 번째 하드 드라이브의 첫 번째 파티션을 나타냅니다.

CD-ROM을 마운트 하시겠습니까? mount 명령을 실행하고 마운트하려는 장치로 / dev / cdrom을 지정하십시오. 첫 번째 하드 드라이브를 분할 하시겠습니까? 디스크 파티션 유틸리티를 실행하고 편집하려는 하드 디스크로 / dev / sda를 지정하십시오. 첫 번째 하드 드라이브의 첫 번째 파티션을 포맷 하시겠습니까? 포맷 명령을 실행하여 / dev / sda1을 포맷하도록 지시하십시오.

image

보시다시피, 파일 시스템의 일부로 이러한 장치를 노출하면 장점이 있습니다. 파일 시스템은 모든 응용 프로그램이 장치를 처리하고 액세스하는 데 사용할 수있는 일관된 “이름 공간”을 제공합니다.

/ dev / null, / dev / random 및 / dev / zero

/ dev 파일 시스템에는 물리적 장치를 나타내는 파일 만 포함되어 있지 않습니다. 다음은 가장 주목할만한 특수 장치 중 세 가지입니다.

  • / dev / null – 기록 된 모든 데이터를 버립니다. 휴지통 또는 블랙홀이라고 생각하십시오. / dev / null에 불만 사항을 보내라는 댓글이 표시되면 “쓰레기통에 던지다”고 말하는 괴짜입니다.
  • / dev / random – 환경 노이즈를 사용하여 임의성을 생성합니다. 탭할 수있는 난수 생성기입니다.
  • / dev / zero – 0을 생성합니다. 상수 스트림은 0입니다.

이 세 파일을 파일로 생각하면 파일을 사용할 수 없습니다. 대신 도구로 생각하십시오.

예를 들어, 기본적으로 Linux 명령은 표준 출력 (일반적으로 터미널)에 인쇄되는 오류 메시지 및 기타 출력을 생성합니다. 명령을 실행하고 출력에 신경 쓰지 않으려면 해당 출력을 / dev / null로 리디렉션 할 수 있습니다. 명령 출력을 / dev / null로 리디렉션하면 즉시 삭제됩니다. 모든 명령이 자체 “자동 모드”를 구현하는 대신이 명령을 모든 명령에 사용할 수 있습니다.

명령> / dev / null

image

암호화 키를 생성하기 위해 임의의 소스를 원한다면 / dev / random을 사용할 수 있습니다.

0을 기록하여 하드 드라이브의 내용을 지우려면 드라이브 제로화 전용 유틸리티가 필요하지 않습니다. 표준 유틸리티와 / dev / zero를 사용할 수 있습니다. 예를 들어 dd 명령은 위치에서 읽고 다른 위치에 씁니다. 다음 명령은 / dev / zero에서 0을 읽고 시스템의 첫 번째 하드 디스크 파티션에 직접 기록하여 내용을 완전히 지 웁니다.

(경고:이 명령은 첫 번째 파티션을 실행하면 모든 데이터를 지 웁니다. 데이터를 삭제하려는 경우에만이 명령을 실행하십시오.)

dd if = / dev / zero of = / dev / sda1

여기서는 특수 파일 (/ dev / zero 및 / dev / sda1)과 함께 dd를 사용하고 있지만 dd를 사용하여 실제 파일을 읽고 쓸 수도 있습니다. 동일한 명령은 장치를 직접 조작하고 파일로 작업하는 데 모두 작동합니다.

설명

실제로는“모든 것이 파일 스트림”보다“모든 것이 바이트 스트림”이라고 말하는 것이 더 정확합니다. / dev / random은 파일이 아니지만 확실히 바이트 스트림입니다. 기술적으로 파일은 아니지만 파일 시스템에서 액세스 할 수 있습니다. 파일 시스템은 모든 파일에 액세스 할 수있는 범용 “네임 스페이스”입니다. 난수 생성기에 액세스하거나 장치에서 직접 읽으시겠습니까? 파일 시스템에서 둘 다 찾을 수 있습니다. 다른 형태의 주소 지정이 필요하지 않습니다.

물론 일부 파일은 실제로 파일이 아닙니다. 시스템에서 실행중인 프로세스는 파일 시스템의 일부가 아닙니다. “모든 것이 파일입니다”는 정확하지 않지만 많은 것들이 파일로 작동합니다.