본문 바로가기
IT/리눅스 명령어

리눅스 script 명령어 사용법 리눅스 실시간 터미널 로그 남기기

by 꾸꾸웍스 2022. 8. 14.
반응형

 

리눅스 script 명령어란?

 

리눅스 script 명령어란 사용 중인 터미널 세션에 대한 기록을 파일로 저장하는 명령어입니다. script명령어는 사용자가 터미널 화면에서 작업한 명령어에 대한 기록들을 로그로 남기기 위하여 저장하거나 터미널 화면을 다른 사용자와 실시간으로 공유할 수도 있습니다.

 

 

리눅스 script 명령어 사용법

 

✔ 리눅스 script 명령어 사용법

  $ script [옵션] [저장할파일명]

 

리눅스 script 명령어에 저장할 파일명을 입력하면 "Script started, file [파일명]"이라는 문구가 출력이 되면서 이 순간부터 터미널에 행동하는 모든 것들이 지정한 파일명에 저장됩니다. script 명령어를 종료하고 싶다면 터미널에 exit를 입력하거나 ctrl+d를 입력하면 "Script done, file is [파일명]"과 함께 script가 종료됩니다. script 명령어의 옵션은 필수는 아니지만 옵션을 사용하는 것을 권장드립니다. 옵션에 대한 내용은 아래 내용을 참고하시면 됩니다.

 

 

리눅스 script 명령어 옵션

 

번호 옵션 long옵션 설명
1 -a --append 이전에 작성되었던 script 내용에 추가하여 작성합니다.
2 -c --command 지정한 특정 명령을 실행하여 파일명에 저장합니다.
3 -e --return 자식 프로세스 exit code를 반환합니다.
4 -f --flush 같은 서버의 접속한 다른사람에게 실시간으로 공유합니다.
5 - --force 링크인 경우에도 출력파일로 사용합니다.
6 -q --quiet scirpt 명령어 시작과 종료의 출력메세지를 출력하지 않습니다.
7 -t --timing[=logfile] script 명령어를 단계별로 캡처하여 재생할 수 있는 옵션입니다.
8 -V --version script 명령어의 버전을 출력합니다.
9 -h --help script 명령어의 사용법을 출력합니다.

 

 

반응형

 

 

리눅스 script 명령어 옵션 사용법

 

script -a 옵션

$ script -a file1

root@server # cat file1
This is a test file.

root@server # script -a file1   (또는)   script --append file1
Script started, file is file1

root@server # echo "This is test command"
This is test command

root@server # exit
exit
Script done, file is file1

root@server # cat -n file1
 1 This is a test file
 2 Script started, file is file1
 3
 4 root@server # echo "This is test command"
 5 This is test command
 6
 7 root@server # exit
 8 exit
 9 Script done, file is file1

 

리눅스 script -a 옵션은 기존 동일한 파일에 내용을 추가하여 작성하는 옵션입니다. 예를 들어 file1에 대한 script 명령어를 실행하는 중 어떠한 이유 때문에 터미널이 종료되었거나 추가로 작성할 내용이 있으면 script -a옵션을 사용하여 내용을 추가할 수 있습니다.

 

 

 script -c 옵션

$ script -c cal test1.txt

root@server # script -c cal test1.txt (또는) script --command cal test1.txt
Script started, file is test1.txt
     August 2022
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

Script done, file is test1.txt

root@server # cat test1.txt
Script started on Fri 12 Aug 2022 03:38:08 PM KST
     August 2022
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

 

리눅스 script -c 옵션은 터미널의 행동에 대한 정보를 저장하는 것이 아닌 -c 옵션 뒤에 오는 명령어를 실행하여 지정한 파일에 저장 후 자동으로 종료됩니다. 위 예시는 캘린더를 보는 리눅스 명령어의 cal를 사용하였고 -c 옵션 뒤에 명령어가 존재하지 않거나 잘못된 명령어면 command not found를 출력하며 저장하게 됩니다.

 

 

✔ script -f 옵션

리눅스 script -f 옵션은 script 명령어로 실행되는 터미널을 실시간으로 공유할 수 있는 옵션입니다. 쉽게 예를 들어 A, B, C의 사용자 3명이 test서버에 접속하고 있을 때 A의 사용자가 아래와 같이 명령을 합니다.

 

▼ A사용자 터미널 화면

root@server # mkfifo test1

root@ server # ls -l
prw-r--r-- 1 root root 0 Aug 12 16:13 test1

root@server # script -f test1

 

mkfifo 명령어로 공유할 대상의 파일을 test1으로 지정해준 다음에 script 명령어에 -f 옵션을 붙이면 프롬프트가 깜빡거리게 됩니다. 

 

▼ B사용자와 C사용자의 터미널 화면

root@server # ls -l
prw-r--r-- 1 root root 0 Aug 12 16:13 test1

root@server # cat test1
Script started on Fri 12 Aug 2022 04:13:44 PM KST

root@server #

 

이때 B사용자 또는 C사용자 중 cat 명령어로 test1을 입력하면 script 명령어가 실행되는 것이 A, B, C사용자 모두 출력이 되며 실시간으로 화면을 공유할 수 있습니다.

 

▼ 터미널 공유 다른 방법

위와 같이 mkfifo를 수행 후 script -f 옵션으로 사용자 터미널 화면을 공유할 수 있는 방법도 있지만 B와 C의 사용자가 tail -f 명령어로 공유 할 수 있는 방법도 있습니다.

tail -f [script로 지정한 파일명]

 

 

 script -q 옵션

$ script -q test2

root@server # script test1
Script started, file is test1

root@server # exit
exit
Script done, file is test1

root@server # script -q test2 (또는) script --quiet test2

root@server # exit
exit

 

리눅스 script -q 옵션은 script 명령어를 시작하고 종료할 때 출력되는 메시지를 출력하지 않습니다. 예를 들어 위 코드 결과물을 보면 -q 옵션을 사용하지 않았을 때는 "Script started.." / "Script done.." 이런 메시지가 출력되지만 -q 옵션을 사용하면 이러한 메세지가 출력되지 않고 시작되고 종료됩니다.

 

 

 

 

 script -t 옵션

script --time=[log파일] [script파일]

$ script -t=time_log test1

또는

$ script --timing=time_log test1

리눅스 script --time=[file] 옵션은 타이밍 데이터를 표준 오류로 출력하거나 주어진 경우 파일로 출력합니다. 이 데이터에는 공백으로 구분된 두 개의 필드가 있는데 첫 번째 필드는 이전 출력 이후 경과된 시간을 나타내고 두 번째 필드는 이번에 출력된 문자 수를 나타냅니다. 이 옵션은 script 명령어로 실행한 타이핑을 재생하는 데 사용할 수 있습니다.

root@server # script --timing=time_log test1
Script started, file is test1

root@server # echo 1

root@server # echo "Hi"
Hi

root@server # exit
exit
Script done, file is test1

 

위 결과물은 script 명령어를 실행하여 echo 1의 결과와 echo "Hi"의 결과를 test1에 저장을 하였습니다.

 

root@server # scriptreplay --timing=time_log test1

root@server # echo 1

root@server # echo "Hi"
Hi

root@server # exit

 

test1에 저장한 것을 scriptreplay라는 명령어와 함께 동일한 옵션으로 명령을 수행하면 echo 1과 echo "Hi", exit로 명령을 한 기록을 비디오처럼 재생시켜 출력합니다. 명령어를 작성하다 백스페이스, 스페이스바, 명령어를 작성하는 시간 그대로 실제 비디오가 녹화된 것처럼 그대로 재생시켜줍니다.

 

 

 script -V 옵션

$ script -V

root@server # script -V
script from util-linux 2.23.2

root@server # script --version
script from util-linux 2.23.2

 

리눅스 script -V 옵션은 script 명령어의 버전을 출력합니다.

 

 

 script -h 옵션

$ script -h

root@server # script -h

Usage:
 script [options] [file]

Options:
 -a, --append            append the output
 -c, --command <command> run command rather than interactive shell
 -e, --return            return exit code of the child process
 -f, --flush             run flush after each write
     --force             use output file even when it is a link
 -q, --quiet             be quiet
 -t, --timing[=<file>]   output timing data to stderr (or to FILE)
 -V, --version           output version information and exit
 -h, --help              display this help and exit
 
root@server # script --help

Usage:
 script [options] [file]

Options:
 -a, --append            append the output
 -c, --command <command> run command rather than interactive shell
 -e, --return            return exit code of the child process
 -f, --flush             run flush after each write
     --force             use output file even when it is a link
 -q, --quiet             be quiet
 -t, --timing[=<file>]   output timing data to stderr (or to FILE)
 -V, --version           output version information and exit
 -h, --help              display this help and exit

 

리눅스 script -h 옵션은 script 명령어의 사용법을 출력합니다.

반응형
그리드형

댓글