웹사이트 검색

Linux I/O(입력/출력) 리디렉션 작동 방식의 기본 사항 알아보기


Linux 관리에서 가장 중요하고 흥미로운 주제 중 하나는 I/O 리디렉션입니다. 명령줄의 이 기능을 사용하면 명령의 입력 및/또는 출력을 파일에서 및/또는 파일로 리디렉션하거나 파이프를 사용하여 여러 명령을 결합하여 "명령 파이프라인"을 형성할 수 있습니다. .

우리가 실행하는 모든 명령은 기본적으로 두 가지 종류의 출력을 생성합니다.

  1. 명령 결과 – 프로그램이 생성하도록 설계된 데이터
  2. 프로그램 실행 내역을 사용자에게 알려주는 프로그램 상태 및 오류 메시지입니다.

Linux 및 기타 Unix 계열 시스템에는 파일 설명자 번호를 사용하여 셸에서 식별되는 아래 이름의 세 가지 기본 파일이 있습니다.

  1. stdin 또는 0 – 키보드에 연결되어 있으며 대부분의 프로그램은 이 파일에서 입력을 읽습니다.
  2. stdout 또는 1 – 화면에 첨부되며 모든 프로그램은 결과를 이 파일로 보내고
  3. stderr 또는 2 – 프로그램은 화면에도 첨부된 이 파일에 상태/오류 메시지를 보냅니다.

따라서 I/O 리디렉션을 사용하면 명령의 입력 소스는 물론 출력 및 오류 메시지가 전송되는 위치도 변경할 수 있습니다. 이는 “< ”“> ” 리디렉션 연산자를 통해 가능합니다.

Linux에서 표준 출력을 파일로 리디렉션하는 방법

아래 예와 같이 표준 출력을 리디렉션할 수 있습니다. 여기서는 나중에 검사하기 위해 top 명령의 출력을 저장하려고 합니다.

top -bn 5 >top.log

플래그 위치:

  1. -btop을 배치 모드로 실행하여 출력을 파일이나 다른 명령으로 리디렉션할 수 있습니다.
  2. -n – 명령이 종료되기 전의 반복 횟수를 지정합니다.

다음과 같이 cat 명령을 사용하여 top.log 파일의 내용을 볼 수 있습니다.

cat top.log

명령의 출력을 추가하려면 “>> ” 연산자를 사용하십시오.

예를 들어 top.log 파일, 특히 스크립트(또는 명령줄) 내에서 위의 top 명령 출력을 추가하려면 아래 줄을 입력하세요.

top -bn 5 >>top.log

참고: 파일 설명자 번호를 사용하면 위의 출력 리디렉션 명령은 다음과 동일합니다.

top -bn 5 1>top.log

Linux에서 표준 오류를 파일로 리디렉션하는 방법

명령의 표준 오류를 리디렉션하려면 쉘이 수행하려는 작업을 이해할 수 있도록 파일 설명자 번호 2를 명시적으로 지정해야 합니다.

예를 들어 아래 ls 명령은 루트 권한이 없는 일반 시스템 사용자가 실행할 때 오류를 생성합니다.

ls -l /root/

아래와 같이 표준 오류를 파일로 리디렉션할 수 있습니다.

ls -l /root/ 2>ls-error.log
cat ls-error.log 

표준 오류를 추가하려면 아래 명령을 사용하십시오.

ls -l /root/ 2>>ls-error.log

표준 출력/오류를 하나의 파일로 리디렉션하는 방법

명령의 모든 출력(표준 출력 및 표준 오류 모두)을 단일 파일로 캡처하는 것도 가능합니다. 이는 파일 설명자 번호를 지정하여 두 가지 가능한 방법으로 수행할 수 있습니다.

1. 첫 번째는 다음과 같이 작동하는 비교적 오래된 방법입니다.

ls -l /root/ >ls-error.log 2>&1

위 명령은 셸이 먼저 ls 명령의 출력을 ls-error.log 파일(>ls-error.log 사용)로 보낸 다음 다음을 기록한다는 의미입니다. ls-error.log 파일로 리디렉션된 파일 설명자 2(표준 출력)에 대한 모든 오류 메시지(2>&1 사용) ). 표준 오류도 표준 출력과 동일한 파일로 전송된다는 것을 의미합니다.

2. 두 번째이자 직접적인 방법은 다음과 같습니다.

ls -l /root/ &>ls-error.log

다음과 같이 표준 출력과 표준 오류를 단일 파일에 추가할 수도 있습니다.

ls -l /root/ &>>ls-error.log

표준 입력을 파일로 리디렉션하는 방법

모든 명령은 아니지만 대부분의 명령은 표준 입력에서 입력을 받으며 기본적으로 표준 입력은 키보드에 연결됩니다.

키보드 이외의 파일에서 표준 입력을 리디렉션하려면 아래와 같이 “< ” 연산자를 사용합니다.

cat <domains.list 

표준 입력/출력을 파일로 리디렉션하는 방법

아래와 같이 sort 명령을 사용하여 표준 입력, 표준 출력 리디렉션을 동시에 수행할 수 있습니다.

sort <domains.list >sort.output

파이프를 사용하여 I/O 리디렉션을 사용하는 방법

한 명령의 출력을 다른 명령의 입력으로 리디렉션하려면 파이프를 사용할 수 있습니다. 이는 복잡한 작업에 유용한 명령줄을 구축하는 강력한 수단입니다.

예를 들어 아래 명령은 최근에 수정된 상위 5개 파일을 나열합니다.

ls -lt | head -n 5 

옵션은 다음과 같습니다.

  1. -l – 긴 목록 형식을 활성화합니다.
  2. -t – 수정 시간순으로 정렬하고 최신 파일이 먼저 표시됩니다.
  3. -n – 표시할 헤더 줄 수를 지정합니다.

파이프라인 구축을 위한 중요한 명령

여기서는 명령 파이프라인을 구축하기 위한 두 가지 중요한 명령을 간략하게 검토하겠습니다.

xargs는 표준 입력에서 명령줄을 작성하고 실행하는 데 사용됩니다. 다음은 xargs를 사용하는 파이프라인의 예입니다. 이 명령은 Linux에서 파일을 여러 디렉터리에 복사하는 데 사용됩니다.

echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

옵션은 다음과 같습니다.

  1. -n 1 – 명령줄당 최대 하나의 인수를 사용하고 cp 명령으로 보내도록 xargs에 지시합니다.
  2. cp – 파일을 복사합니다
  3. -v – 복사 명령의 진행 상황을 표시합니다.

더 많은 사용 옵션과 정보를 보려면 xargs 매뉴얼 페이지를 읽어보세요.

man xargs 

tee 명령은 표준 입력에서 읽고 표준 출력 및 파일에 씁니다. 다음과 같이 가 어떻게 작동하는지 보여줄 수 있습니다.

echo "Testing how tee command works" | tee file1 

파일 또는 텍스트 필터는 효과적인 Linux 파일 작업을 위해 파이프와 함께 일반적으로 사용되며 명령 출력 재구성(유용한 Linux 보고서 생성에 필수적일 수 있음), 파일의 텍스트 수정 및 기타 여러 Linux 시스템 관리와 같은 강력한 방법으로 정보를 처리합니다. 작업.

Linux 필터 및 파이프에 대해 자세히 알아보려면 Apache 서버에 액세스하는 상위 10개 IP 주소 찾기 기사를 읽고 필터 및 파이프 사용에 대한 유용한 예를 보여줍니다.

이 기사에서는 Linux의 I/O 리디렉션의 기본 사항을 설명했습니다. 아래 피드백 섹션을 통해 여러분의 생각을 공유해 주세요.