본문 바로가기
CentOS and Redhat Linux/Linux 설정 및 기능

(CentOS7) tee 명령으로 화면과 파일에 동시 출력

by 미니몬 2024. 2. 14.

목차

    728x90
    반응형

    1) tee 명령어란?

    리눅스에서 사용되는 tee 명령어는 유닉스 및 유닉스 계열 시스템(리눅스 포함)에서 사용되는 명령어로, 표준 입력을 받아서 이를 한 번에 두 곳으로 보내는 역할을 합니다. 하나는 표준 출력(보통은 화면)으로, 다른 하나는 하나 이상의 파일로 데이터를 쓰는 것입니다. 이 명령어의 이름은 T 분기관처럼 데이터 스트림을 분기시킨다는 데서 유래되었습니다.

     

    이러한 tee 명령어를 사용해서 출력 결과를 파일과 화면에 동시에 출력해보는 방법을 알아보겠습니다.

     

     

    2) 사용법

    command | tee output.txt

    tee 명령은 두 가지 옵션이 사용됩니다.

    • a 옵션 : 기존 파일에 내용을 추가합니다. 기존 파일에 덮어쓰지 않습니다
    • i 옵션 : 인터럽트 신호를 무시합니다.즉 사용자 일반 종료 시그널(Ctrl + C)을 무시합니다.

     

    그렇다면 i 옵션으로 실행했을 때 어떻게 종료하냐?

     ↓

    더보기

    리눅스에서는 다양한 종료 시그널이 있는데요.

    kill 명령에 3, 9, 15 옵션을 주어 종료 시킬수 있습니다.

    • 3(SIGQUIT) 옵션 : 코어덤프 생성, 프로세스 강제 종료
    • 9(SIGKILL) 옵션 : 프로세스 비정상 강제 종료
    • 15(SIGTERM) 옵션 : 프로세스 정상적인 강제 종료

    $ kill -SIG_ID -PID

    kill -9 999

     

    아래는 kill 명령의 시그널 리스트입니다.

    [root@cent7 ~]# kill -l
     1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
     6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
    11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
    16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
    21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
    26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
    31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
    38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
    43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
    48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
    53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
    58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
    63) SIGRTMAX-1	64) SIGRTMAX

     

     

     

    3) 사용예시

    간단한 스크립트를 만들어 사용해 보겠습니다.

    [root@cent7 ~]# cat test.sh 
    #! /bin/bash
    
    cnt=1
    
    while true; do
        echo "Hello Number $cnt"
        ((cnt++))
        if [ $cnt -gt 5 ]; then
            break
        fi
        sleep 1
    done

     

    이렇게 출력 시키는 스크립트를 tee 명령을 주고 실행하게 되면 출력 결과가 파일과 화면에 같이 출력됩니다.

    [root@cent7 ~]# sh test.sh | tee output.txt
    Hello Number 1
    Hello Number 2
    Hello Number 3
    Hello Number 4
    Hello Number 5
    [root@cent7 ~]# cat output.txt 
    Hello Number 1
    Hello Number 2
    Hello Number 3
    Hello Number 4
    Hello Number 5

     

    728x90
    반응형