홈페이지 » 어떻게 » Linux에서 Everything is a File은 무엇을 의미합니까?

    Linux에서 Everything is a File은 무엇을 의미합니까?

    리눅스와 다른 유닉스 계열 운영체제의 특징 중 하나는 "모든 것이 파일이다"는 것이다. 이것은 단순화 된 설명이지만 의미가 무엇인지 이해하면 리눅스가 어떻게 작동하는지 이해하는 데 도움이 될 것이다..

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

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

    / proc

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

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

    기억하라. / proc / cpuinfo는 실제로이 정보를 담고있는 텍스트 파일이 아니다. 리눅스 커널과 proc 파일 시스템은이 정보를 우리에게 파일로 공개하고있다. 이를 통해 우리는 익숙한 도구를 사용하여 정보를보고 작업 할 수 있습니다..

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

    • / proc / uptime - 리눅스 커널의 가동 시간 즉, 시스템을 종료하지 않고 얼마나 오래 시스템을 가동 시켰는가를 보여줍니다..
    • / proc / version - 리눅스 커널 버전 공개.

    / dev

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

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

    보시다시피, 이러한 장치를 파일 시스템의 일부로 노출 시키면 장점이 있습니다. 파일 시스템은 모든 응용 프로그램이 장치의 주소 지정 및 액세스에 사용할 수있는 일관된 "이름 공간"을 제공합니다.

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

    / dev 파일 시스템은 물리적 장치를 나타내는 파일 만 포함하지 않습니다. 여기에 포함 된 가장 주목할만한 세 가지 장치가 있습니다.

    • / dev / null - 쓰여진 모든 데이터를 지 웁니다. 쓰레기통이나 블랙홀이라고 생각하십시오. / dev / null에 불만을 제기하라는 내용의 댓글을 본 적이 있다면 "쓰레기통에 버려두는 것"이라고 말하는 괴짜입니다.
    • / dev / random - 환경 소음을 사용하여 무작위성을 생성합니다. 난수 생성기입니다..
    • / dev / zero - 0을 만듭니다. 0의 지속적인 스트림입니다..

    이 세 파일을 파일이라고 생각하면 사용하지 않을 것입니다. 대신 도구로 생각하십시오..

    예를 들어, 기본적으로 Linux 명령은 오류 메시지와 기타 출력을 표준 출력 (일반적으로 터미널)에 출력합니다. 명령을 실행하고 출력에 신경 쓰지 않으려면 출력을 / dev / null로 재 지정할 수 있습니다. 명령의 출력을 / dev / null로 재 지정하면 즉시 폐기됩니다. 모든 명령에 자체 "자동 모드"를 구현하는 대신 모든 명령에이 메서드를 사용할 수 있습니다.

    명령> / dev / null

    난수 생성 원을 원한다면 (예를 들어, 암호화 키 생성을 위해, 당신은 당신 자신의 난수 생성기를 쓸 필요가 없을 것입니다.) 여러분은 / dev / random을 사용할 수 있습니다.

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

    (경고:이 명령을 실행하면 첫 번째 파티션의 모든 데이터가 지워집니다. 데이터를 삭제하려면이 명령을 실행하십시오.)

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

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

    설명

    실제로 "모든 것이 파일입니다"보다는 "모든 것이 바이트의 흐름"이라고 말하는 것이 더 정확합니다. / dev / random은 파일이 아니지만 확실히 바이트 스트림입니다. 그리고 이러한 것들은 기술적으로 파일이 아니지만 파일 시스템에서 액세스 할 수 있습니다. 파일 시스템은 모든 것이 액세스 가능한 보편적 인 "이름 공간"입니다. 난수 생성기에 액세스하거나 장치에서 직접 읽으려고합니까? 파일 시스템에서 두 가지를 찾을 수 있습니다. 다른 형태의 주소 지정 필요 없음.

    물론, 실제로는 파일이 아닙니다. 시스템에서 실행중인 프로세스는 파일 시스템의 일부가 아닙니다. "Everything is a file"은 정확하지 않지만, 많은 것들이 파일로서 행동합니다.