리눅스 표준 Stream

yoon__0_0·2024년 5월 8일
0

이어드림 수업

목록 보기
17/103

표준 stream

  • stream이란?

stream
유닉스 계열 운영체제에서 프로그램(프로세스)을 드나드는 연속적인 데이터를 흐름

  • 표준 stream 이란?

표준 Stream
프로세스와 주변장치가 연결된 입출력 통로 (추상화된 통로)

  • 운영체제가 기동되면 대화형 셸(ssh, zsh 등)은 3개의 표준 스트림이 상속됨
  • 표준입력, 표준 출력, 표준 에러 은 기본적으로 열림
  • 입력 1개, 출력 2개 의 스트림이 열림

표준입력 (stdin)

  • 프로세스로 입력되는 데이터 스트림
  • 보통 문자열
  • 별도의 리다이렉션 없이 프로세스가 실행된 경우 표준 입력은 키보드로 부터 받음

표준 출력(stdout)

  • 프로세스의 출력 데이터를 기록하는 스트림
  • 리다이렉션 없이 프로세스가 실행될 경우 표준 출력은 텍스트 터미널이 됨

표준 오류 (stderr)

  • 프로세스의 오류 데이터를 기록하는 또다른 출력 스트림
  • 표준 출력과는 별개의 스트림으로 별도로 리다이렉션 가능

표준 Stream 변경(조작)

리다이렉션(redirection)

리다이렉션
표준 스트림을 사용자 지정 위치로 변경할 수 있는 명령

  • 표준 출력을 터미널 창에 하지 않거나, 표준 입력을 키보드로 하는 것이 아님
  • 파일로 입력을 받거나, 파일로 출력하도록 변경하는 것을 뜻함
  • '>' : 명령어의 실행 결과인 표준 출력을 파일로 받겠다. (덮어쓰기)
  • '>>' : 명령어의 실행결과인 표준 출력을 파일 뒤에 추가하겠다.
  • '<' : 명령어를 실행하기 위한 입력을 파일로부터 주겠다
  • 예시
echo "yoonjae" > yoonjae.txt
eocho "like Tea" >> yoonjae.txt
tail -n 2 < yoonjae.txt

파이프(pipe)

파이프
서로다른 프로세스간의 연결로, 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 사용하는 것

  • | 의 기호를 활용하여 A | B 의 형태로 많이 사용됨

  • 이는 A 명령어의 표준 출력을 B 명령어의 표준 입력으로 활용한다는 것

  • 예시 : 현재 폴더에 있는 list를 다 보여주는데, 그중에 bash 글자가 들어간 것만 보여줘라

ls -al | grep bash 
  • 예시 2 : 위의 값을 test.txt 파일로 넣어라 (파이프와 리다이렉션 함께 사용)
ls -al | grep bash > test.txt

파일 관리

리눅스에서의 파일

  • 리눅스 시스템의 모든것은 파일로 구성되어 있음
  • 리눅스에서 파일을 읽거나 쓰기 전에 반드시 열어야함.

파일 디스크립터

파일디스크립터(File Descriptor)
프로세스가 파일에 접근하기 위해 제공되는 고유 식별자

  • 프로세스가 특정 파일에 접근하기 위해 해당 파일의 파일 디스크립터를 사용함

  • 기본적으로 할당되는 파일 디스크립터 0,1,2 는 제외하고 3부터 할당

    FD종류영문
    0표준 입력stdin
    1표준 출력stdout
    2표준 오류stderr
  • 파일 디스크립터 확인은 PID를 통해서 확인할 수 있음

sudo ls -trn /proc/[PID]/fd
  • 파일 디스크립터들을 저장한 파일 디스크립터 테이블도 프로세스마다 존재함

파일 테이블

파일테이블
커널내 자료구조로 파일들을 관리하기 위해 프로세스 별로 열린 파일 목록 및 특성들 저장된 테이블

  • 열려진 모든 파일 목록들을 가지고 있음
  • 각 항목은 파일에 대한 정보를 담고 있음
  • 각종 메타데이터 포함

메타데이터
데이터를 표현하기 위한 데이터

profile
신윤재입니다

0개의 댓글