[RHEL6] 파일 보기 명령어 3탄(pathchk, size, sum, tail, tailf)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 파일 보기 명령어 3탄(pathchk, size, sum, tail, tailf)

by 찬찬이 아빠 2020. 3. 27.
반응형
  11. pathchk(파일 이름 점검)

 1) 경로 : /usr/bin/pathchk

 2) 요약 : 파일 이름이 유효하거나 이식성이 있는지 체크

 3) 사용 방법 : pathchk [옵션] 파일이름

 4) 옵션

 -p : 대부분의 포직스 시스템 규정을 검사

 -P : 빈 파일 이름인지와 "-"로 시작하는지 검사

 --portability : 모든 포직스 시스템을 체크(-p와 -P 옵션을 같이 사용)

 --help : 사용법 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

pathchk 명령어는 파일 이름이 유효한지 또는 이식성이 있는지 점검합니다. 다음이 이 조건이 만족하는 경우입니다.

 

§ 디렉터리에 있는 모든 파일명이 실행 권한을 갖고 있음

§ 파일명의 길이가 파일 시스템이 지원하는 최대 파일 길이를 넘지 않음

§ 디렉터리명의 길이가 지원하는 파일 시스템의 최대 길이를 넘지 않음

 

종료 상태는 다음과 같습니다.

 

§ 0 : 모든 파일명이 검사에 만족했을 때

§ 1 : 그 외

 

아래와 같이 -p나 --portability 옵션은 검색하는 파일이 포직스의 최소 규정에 맞는지 체크합니다. 파일명의 길이 32자는 포직스X 최소 규정인 14자를 넘어섭니다. 이는 이식성에 문제가 있습니다.

# pathchk --portability pathchk.test.foo
pathchk: limit 14 exceeded by length 32 of file name component 'pathchk..test.foo'

 

 

  12.size(크기 보기)

 1) 경로 : /usr/bin/size

 2) 요약 : 섹션 크기와 전체 크기를 출력

 3) 사용 방법 : size [-A|-B--format=compatibility] [--help] [-d|-o|-x|--radix=number] [--common] [-t|--totals] [--target=bfdname] [-V|--version] [objfile...]

 4) 옵션

 -A, -B, --format=compatibility : -A나 -format=sysv는 System V 형식으로 출력. -B나 -format=berkeley는 버클리 형식으로 출력. 기본은 옵션을 지정하지 않음. 이는 버클리 형식과 비슷

 --help : 사용법 출력

 -d, -o, -x, --radix=number : 지정한 형태로 섹션의 크기를 출력. -d 또는 -radix=10은 10진수로, -o 또는 -radix=8은 8진수로, -x 또는 -radix=16은 16진수 형태로 출력

 -t, -totals : 모든 오프젝트 목록의 전체 크기를 출력. (버클리 형식만 지원)

 --target=bfdname : 바이너리 파일 형태를 지정

 -V, --versioin : 버전 정보 출력

 @file : 지정한 파일에서 읽음

 

 5) 추가 설명

size 명령어는 오브젝트 파일이나 일반 파일에서 섹션이나 파일의 전체 크기를 출력합니다. 먼저 아래와 같이 ls 명령으로 라이브러리의 전체 크기를 살펴봅니다.

# ls -alh /lib/libz.so.1.2.3.3
-rw-r--r--	1	root	root	82K	2020-03-27	/lib/libz.so.1.2.3.3

 

아래와 같이 size 명령은 각 섹션에 대한 정보를 출력합니다.

# size /lib/libz.so.1.2.3.3
test	data	bss		dec		hex		filename
79766	716		8		80490	13a6a	/lib/libz.so.1.2.3.3

 

-t 옵션은 지정한 파일의 전체 합계를 출력합니다.

# size -t /lib/libz.so.1.2.3.3 /lib/libwrap.so.0.7.6
text	data		bss		dec			hex		filename
79766	716			8		80490		13a6a	/lib/libz.so.1.2.3.3
27270	1368		2012	30650		77ba	/lib/libwrap.so.0.7.6
107036	2084		2020	111140		1b224	(TOTALS)

 

size의 출력 형태에는 버클리와 System V가 있습니다. 아래는 기본값인 버클리 형식의 출력 예입니다.

# size --format=berkeley /usr/bin/ranlib /usr/bin/size
text		data		bss		dec		hex		filename
46134		680		396		47210		b86a	/usr/bin/ranlib
21487		756		612		22855		5947	/usr/bin/size

 

아래는 System V 형태로 출력한 예입니다. 데이터는 위와 동일합니다.

# size --format=sysv /usr/bin/ranlib /usr/bin/size
/usr/bin/ranlib :
section size addr
.interp 19 134512980
.note.ABI-tag 32 134513000
.note.gnu.build-id 36 134513032
--- 중간 생략 ---
.got.plt 376 134565876
.data 36 134566252
.bss 396 134566304
.gnu_debuglink 12 0
Total 47222

/usr/bin/size:
section size addr
.interp 19 134512980
.note.ABI-tag 32 134513000
.note.gnu.build-id 36 134513032
--- 중간 생략 ---
.got.plt 300 134541300
.data 192 134541600
.bss 612 134541792
.gnu_debuglink 12 0
Total 22867

 

 

 

  13. sum(파일 확인)

 1) 경로 : /usr/bin/sum

 2) 요약 : 파일의 체크섬과 블록 수를 계산하여 원본 파일과 비교

 3) 사용 방법 : sum [옵션] 파일

 4) 옵션

 -r : BSD sum 알고리즘으로 1KB 블록을 사용

 -s, --sysv : sys V sum 알고리즘을 ㅣㅇ용하여 512byte 블록을 사용

 --help : 사용법 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

sum 명령어는 표준 입력으로 파일을 열어, 해당 파일의 1KB의 블록 수와 체크 섬을 계산합니다. 만일 옵션을 지정하지 않으면 BSD sum 알고리즘을 사용합니다. 일반적으로 통신상에서 주고받는 파일 간에 문제점을 검사할 경우에 주로 사용합니다. 특히 원본과 사본 파일을 구별할 수 있고 중간에 변경되었다면 이를 확인할 수 있습니다. 아래와 같이  1,024당 블록 수와 체크섬을 확인할 수 있는데 그 결과 두 파일이 같음을 확인할 수 있습니다.

# sum type type1
10914 8 type
10914 8 type1

 

 

  14. tail(마지막 파일 내용 출력)

 1) 경로 : /usr/bin/tail

 2) 요약 : 파일의 마지막 행을 기준으로 지정 행까지 출력

 3) 사용 방법 : tail [옵션] 파일

 4) 옵션

 -c, --bytes=N : 마지막 바이트(N) 만큼 내용을 출력

 -f, --follow : tail을 종료하지 않고 파일의 업데이트 내용을 실시간으로 출력

 -n, --lines=N : 파일의 마지막 행부터 N번째까지 출력

 -q, --quiet, --silent : 파일명을 출력하지 않음

 -v, --verbose : 출력 전에 파일 이름을 출력

 --help : 사용법 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

tail 명령어는 문서의 마지막 행부터 지정한 행까지의 파일 내용을 출력합니다. 기본값으로 파일의 마지막 10행을 출력합니다. 참고로 head 명령어는 파일의 앞 부분을 출력합니다. 파일 내용을 출력하는 cat, more, less 등과 달리 tail은 최근 기록된 로그 파일과 같이 마지막 행을 보고 싶을 때 유용합니다.

 

tail 명령어로 /var/log.messgae 파일을 살펴봅니다. 아래와 같이 nl 명령어는 행의 수를 출력합니다.

# tail /var/log/messages | nl
     1	Dec  9 04:02:41 localhost systemd: Stopping Session 1 of user root.
     2	Dec  9 04:02:41 localhost systemd: Stopped target rpc_pipefs.target.
     3	Dec  9 04:02:41 localhost systemd: Stopped target RPC Port Mapper.
     4	Dec  9 04:02:41 localhost systemd: Stopping Availability of block devices...
     5	Dec  9 04:02:41 localhost systemd: Stopping RPC bind service...
     6	Dec  9 04:02:41 localhost systemd: Unmounting RPC Pipe File System...
     7	Dec  9 04:02:41 localhost systemd: Stopped Daily Cleanup of Temporary Directories.
     8	Dec  9 04:02:41 localhost systemd: Stopped target Multi-User System.
     9	Dec  9 04:02:41 localhost systemd: Stopping ABRT kernel log watcher...
    10	Dec  9 04:02:41 localhost systemd: Stopping OpenSSH server daemon...

 

-5 옵션은 마지막 행 부터 위쪽으로 5줄을 출력합니다.

# tail -5 /var/log/messages | nl
     1	Dec  9 04:02:41 localhost systemd: Unmounting RPC Pipe File System...
     2	Dec  9 04:02:41 localhost systemd: Stopped Daily Cleanup of Temporary Directories.
     3	Dec  9 04:02:41 localhost systemd: Stopped target Multi-User System.
     4	Dec  9 04:02:41 localhost systemd: Stopping ABRT kernel log watcher...
     5	Dec  9 04:02:41 localhost systemd: Stopping OpenSSH server daemon...

 

wc 명령으로 확인 결과 messages 로그의 행은 24개 입니다.

# wc /var/log/messages
  24  270 1983 /var/log/messages

 

+N옵션은 지정한 행부터 마지막 행가지 출력합니다. 아래 예제는 1000 행부터 마지막 행까지의 내용을 출력합니다.

# tail +1000 /var/log/messages

 

-f 옵션은 파일에 추가되는 내용을 업데이트 하며 출력합니다.

 

아래와 같이 -f 옵션은 /var/log/messages 로그 파일과 같이 커널 로그를 계속해서 감시할 때 유용합니다.

# tail -f /var/log/messages

 

 

  15. tailf(로그 보기)

 1) 경로 : /bin/tailf

 2) 요약 : 파일이 생성되는 기록을 출력

 3) 사용 방법 : tailf [옵션] 파일

 4) 옵션

 -n, --lines=N, -N : 지정한 라인수(N) 만큼 출력

 

 5) 추가 설명

tailf 명령어는 tail -f와 비슷한 기능으로 파일의 마지막 10행을 출력하고, 종료 시그널이 있을 때까지 대기합니다. 다만 파일의 접근 시간을 업데이트 하지 않아, 로그가 추가적으로 기록되지 않을 때는 파일 시스템을 체크하지 않습니다. 로그 기록이 빈번하지 않기 때문에 저성능 노트북의 시스템 로그 파일을 모니터링 할 때나 배터리 수명을 아끼려고 하드디스크의 스핀 다운을 원할 때 매우 유용합니다.

 

아래는 -n 3 옵션으로 /var/log/messages의 로그 기록을 꼐속해서 모니터링하고 있습니다. 만일 /var/log/messages 로그 기록이 생기면 "tail -f"와 같이 메시지를 출력합니다.

# tailf -n 3 /var/log/messages
Dec  9 04:02:41 localhost systemd: Stopped target Multi-User System.
Dec  9 04:02:41 localhost systemd: Stopping ABRT kernel log watcher...
Dec  9 04:02:41 localhost systemd: Stopping OpenSSH server daemon...

 

반응형

댓글