Linux에서 tail 명령을 사용하는 방법

Linux tail 명령은 파일 끝의 데이터를 표시합니다. 파일에 추가된 업데이트를 실시간으로 표시할 수도 있습니다. 우리는 그것을 사용하는 방법을 보여줍니다.

시스템이 꼬리를 죽였습니까?

tail 명령은 파일 끝의 데이터를 보여줍니다. 일반적으로 새 데이터는 파일 끝에 추가되므로 tail 명령은 파일에 가장 최근에 추가된 내용을 빠르고 쉽게 볼 수 있는 방법입니다. 또한 파일을 모니터링하고 해당 파일에 대한 각각의 새 텍스트 항목이 발생할 때 표시할 수 있습니다. 이것은 로그 파일을 모니터링하는 훌륭한 도구입니다.

많은 최신 Linux 배포판은 systemd 시스템 및 서비스 관리자를 채택했습니다. 이것은 실행된 첫 번째 프로세스이며, 프로세스 ID 1, 그리고 다른 모든 프로세스의 부모입니다. 이 역할은 예전에 나이가 많은 사람이 처리 초기화 시스템.

이러한 변경과 함께 시스템 로그 파일에 대한 새로운 형식이 도입되었습니다. 더 이상 일반 텍스트로 생성되지 않으며 systemd에서 바이너리 형식으로 기록됩니다. 에게 이 로그 파일을 읽으려면 다음을 사용해야 합니다. journactl 유틸리티. tail 명령은 일반 텍스트 형식에서 작동합니다. 바이너리 파일은 읽지 않습니다. 그렇다면 tail 명령이 문제를 찾기 위한 솔루션이라는 뜻입니까? 아직 제공할 것이 있습니까?

실시간으로 업데이트를 표시하는 것보다 tail 명령에 더 많은 것이 있습니다. 그리고 그 문제에 대해 시스템에서 생성되지 않고 여전히 일반 텍스트 파일로 생성되는 로그 파일이 많이 있습니다. 예를 들어, 애플리케이션에서 생성된 로그 파일은 형식이 변경되지 않았습니다.

꼬리 사용

파일 이름을 tail에 전달하면 해당 파일의 마지막 10줄이 표시됩니다. 우리가 사용하는 예제 파일에는 정렬된 단어 목록이 포함되어 있습니다. 각 줄에는 번호가 매겨져 있으므로 예제를 따라하기 쉽고 다양한 옵션이 어떤 영향을 미치는지 확인할 수 있습니다.

tail word-list.txt

다른 줄 수를 보려면 -n(줄 수) 옵션을 사용합니다.

tail -n 15 word-list.txt

실제로 “-n”을 생략하고 하이픈 “-“과 숫자만 사용하면 됩니다. 그들 사이에 공백이 없는지 확인하십시오. 기술적으로, 이것은 더 이상 사용되지 않는 명령 형식입니다., 하지만 여전히 매뉴얼 페이지, 그리고 여전히 작동합니다.

tail -12 word-list.txt

여러 파일에 tail 사용

한 번에 여러 파일에 대해 꼬리 작업을 할 수 있습니다. 명령줄에 파일 이름을 전달하기만 하면 됩니다.

tail -n 4 list-1.txt list-2.txt list-3.txt

줄이 어느 파일에 속하는지 알 수 있도록 각 파일에 대해 작은 헤더가 표시됩니다.

  인터넷이 만우절을 죽인 방법(그리고 중단해야 하는 이유)

파일 시작부터 줄 표시

+(시작부터 계산) 수정자는 특정 줄 번호에서 시작하여 파일 시작 부분부터 꼬리 표시 줄을 만듭니다. 파일이 매우 길고 파일의 시작 부분에 가까운 줄을 선택하면 터미널 창으로 많은 출력이 전송됩니다. 그런 경우 출력을 tail에서 less로 파이프하는 것이 좋습니다.

tail +440 list-1.txt

당신은 할 수 있습니다 통제된 방식으로 텍스트를 통해 페이지.

이 파일에는 20,445줄이 있기 때문에 이 명령은 “-6” 옵션을 사용하는 것과 같습니다.

tail +20440 list-1.txt

꼬리가 있는 바이트 사용

-c(bytes) 옵션을 사용하여 라인 대신 바이트 단위의 오프셋을 사용하도록 tail에 지시할 수 있습니다. 이것은 일반 크기의 레코드로 포맷된 텍스트 파일이 있는 경우에 유용할 수 있습니다. 줄 바꿈 문자는 1바이트로 계산됩니다. 이 명령은 파일의 마지막 93바이트를 표시합니다.

tail -c 93 list-2.txt

-c(바이트) 옵션을 +(파일 시작부터 계산) 수정자와 결합하고 파일 시작부터 계산된 오프셋(바이트)을 지정할 수 있습니다.

tail -c +351053 list-e.txt

꼬리에 파이핑

이전에 우리는 tail 의 출력을 less 로 파이프했습니다. 다른 명령의 출력을 tail로 파이프할 수도 있습니다.

가장 오래된 수정 시간을 가진 5개의 파일 또는 폴더를 식별하려면 ls와 함께 -t(수정 시간별 정렬) 옵션을 사용하고 출력을 tail로 파이프합니다.

ls -tl | tail -5

머리 명령 파일의 시작 부분부터 텍스트 줄을 나열합니다.. 이것을 tail과 결합하여 파일의 섹션을 추출할 수 있습니다. 여기에서는 head 명령을 사용하여 파일에서 처음 200줄을 추출합니다. 이것은 마지막 10줄을 추출하는 tail로 파이프됩니다. 이것은 191행에서 200행까지를 제공합니다. 즉, 처음 200행 중 마지막 10행은 다음과 같습니다.

head -n 200 list-1.txt | tail -10

이 명령은 메모리를 가장 많이 사용하는 5개의 프로세스를 나열합니다.

ps aux | sort -nk +4 | tail -5

분해해 봅시다.

ps 명령 실행 중인 프로세스에 대한 정보를 표시합니다.. 사용된 옵션은 다음과 같습니다.

a: 현재 사용자뿐만 아니라 모든 프로세스를 나열합니다.
u: 사용자 지향 출력을 표시합니다.
x: TTY 내에서 실행되지 않는 프로세스를 포함하여 모든 프로세스를 나열합니다.

  macOS Catalina에서 기본 셸을 Bash로 변경하는 방법

정렬 명령 출력을 정렬 ps에서. 정렬과 함께 사용하는 옵션은 다음과 같습니다.

n: 숫자로 정렬합니다.
k +4: 네 번째 열을 기준으로 정렬합니다.

tail -5 명령은 정렬된 출력에서 ​​마지막 5개 프로세스를 표시합니다. 다음은 가장 메모리를 많이 사용하는 5가지 프로세스입니다.

tail을 사용하여 실시간으로 파일 추적

파일(일반적으로 로그 파일)에 도착하는 새 텍스트 항목을 tail로 쉽게 추적할 수 있습니다. 명령줄에 파일 이름을 전달하고 -f(팔로우) 옵션을 사용합니다.

tail -f geek-1.log

각각의 새 로그 항목이 로그 파일에 추가될 때 tail은 터미널 창의 표시를 업데이트합니다.

특정 관련성 또는 관심이 있는 행만 포함하도록 출력을 구체화할 수 있습니다. 여기서는 grep을 사용하여 다음을 포함하는 행만 표시 “평균”이라는 단어:

tail -f geek-1.log | grep average

둘 이상의 파일에 대한 변경 사항을 따르려면 명령줄에 파일 이름을 전달합니다.

tail -f -n 5 geek-1.log geek-2.log

각 항목에는 텍스트의 출처를 표시하는 헤더가 태그로 지정됩니다.

새 항목이 후속 파일에 도착할 때마다 디스플레이가 업데이트됩니다. 업데이트 기간을 지정하려면 -s(휴면 기간) 옵션을 사용합니다. 이것은 tail이 파일 검사 사이에 몇 초(이 예에서는 5초)를 기다리도록 지시합니다.

tail -f -s 5 geek-1.log

물론 스크린샷을 보면 알 수 없지만 파일 업데이트는 2초에 한 번씩 발생합니다. 새 파일 항목은 5초마다 한 번씩 터미널 창에 표시됩니다.

둘 이상의 파일에 추가된 텍스트를 따라갈 때 텍스트가 어떤 로그 파일에서 왔는지를 나타내는 헤더를 표시하지 않을 수 있습니다. -q(자동) 옵션을 사용하여 다음을 수행합니다.

tail -f -q geek-1.log geek-2.log

파일의 출력은 매끄러운 텍스트 혼합으로 표시됩니다. 각 항목이 어떤 로그 파일에서 왔는지 표시되지 않습니다.

꼬리는 여전히 가치가 있습니다

시스템 로그 파일에 대한 액세스는 이제 journalctl에 의해 제공되지만 tail은 여전히 ​​제공할 것이 많습니다. 이것은 다른 명령과 함께 꼬리에 파이프를 넣거나 빼서 사용할 때 특히 그렇습니다.

systemd가 판도를 바꿨을 수도 있지만 한 가지만 잘하면 된다는 유닉스 철학을 따르는 전통적인 유틸리티를 위한 자리가 여전히 있습니다.

  Netflix를 4K로 시청할 수 없습니까? 해결 방법은 다음과 같습니다.