jfind
사용법
jfind [-s][-d] [ -o outfile [-t | -T] ] directory
jfind -V
Options are as follows:
-o outfile save output in filename 'outfile'
-d disable to print the source file name of hard-link file
-s print simple output
-T append date info to outfile name; outfile.YYYY-MM-DD
-t append date and time info to outfile name; outfile.YYYY-MM-DD.HHMMSS
directory specify directory to get information
설명
jfind 명령어는 지정한 디렉토리와 동일한 파일 시스템에 있는 하위의 모든 디렉토리 및 파일의 크기를 수집하는 명령어이다.
jfind 명령어의 주요 사용 목적은 파일 시스템에서 어떤 디렉토리 또는 파일이 디스크의 많은 부분을 사용하는지 확인하기 위함이다.
예를 들어, 갑자기 파일 시스템이 full이 되었을 경우에 어떤 파일이 많이 생겨서 파일 시스템이 full되었는지 확인할 수 있다.
jfind 명령어의 출력물은 jfparse 명령어를 사용하여 분석할 수 있다.
다음의 명령어는 / 루트 파일 시스템에 있는 모든 디렉토리 및 파일의 크기와 사용자 ID, 그룹 ID, 파일 모드, 최종 수정시간 정보를 수집한다.
# jfind -o jfind_root.out /
|
다음은 jfind 명령어의 출력물의 일부이다.
# head jfind_root.out
DATE 2018-12-28 18:57:52
TOP_DIRECTORY /
T SIZE BLOCK UID GID NDIR NFILE MODE DATE FILE
l 9 1 0 0 - - a1ff 57a3a596 bin -> ./usr/bin
- 1526 4 0 2 - - 81a4 57a723b5 usr/include/storclass.h
- 923 3 0 2 - - 81a4 57a723b5 usr/include/libipp.h
- 9617 20 0 2 - - 81a4 57a723b5 usr/include/link.h
- 5426 12 0 2 - - 8124 5613ed74 usr/include/rad/client/1/usermgr.h
- 16683 34 0 2 - - 8124 5613ed6d usr/include/rad/client/1/smf.h
- 421 2 0 2 - - 8124 5613ed6d usr/include/rad/client/1/config.h
|
jfind 명령어의 출력의 첫번쨰 줄에는 데이타를 수집한 디렉토리명이 표시된다.
TOP_DIRECTORY /
/ (root) 디렉토리에서 데이타를 수집했다는 것을 나타낸다.
jfind 명령어는 / 루트 디렉토리 와 그 하위에 있는 파일 및 디렉토리의 데이타만 수집한다.
마운드된 다른 파일 시스템의 정보는 수집하지 않는다.
다음은 jfind 명령어의 출력물에 대한 설명이다.
컬럼 | 설명 |
T |
파일의 종류를 나타낸다.
d | 디렉토리 |
- | 일반 파일 |
l | 심볼릭 링크 파일 |
c | character device 파일 |
b | block device 파일 |
s | domain socket 파일 |
D | door 파일 |
P | port 파일 |
p | named pipe 파일(FIFO) |
-H | hard link 의 원본 파일(jfind에서 사용하는 특별한 형태) |
-h | hard link 파일 (jfind에서 사용하는 특별한 형태) |
-H+num 과 -h
jfind 명령어가 파일의 정보룰 수집할 때, 파일의 링크 카운터가 2 이상인 파일에 대하여, 링크의 개수를 num으로 지정한다.
첫번째 수집된 링크 가운터가 2이상인것이
hard link 원본 파일로 간주하고, 그 다음으로 수집된 동일한 inode를 가진 파일을 hard link 파일로 지칭한다.
예를 들어, '-H+3' 이 의미하는 것은 현재 파일과 다른 두개의 파일이 나를 hard link로 사용하고 있다는 것을 의미한다.
파일의 크기를 중복 계산하는 것을 방지하기 위하여
hard link의 원본 파일은 파일의 크기를 가지고, hard link 파일은 파일의 크기를 가지지 않는다.
|
---|
SIZE |
수집한 데이타가 파일이라면, 파일의 크기가 표시되고,
수집한 데이타가 디렉토리라면, 그 디랙토리에 포함된 모든 파일을 크기의 합계를 표시하고,
콜론(:)으로 분리한 다름에, 그 디렉토리의 하위에 있는 모든 디렉토리에 있는 파일의 합계를 표시한다.
current_directory_size:recursive_total_directory_size
current_directory_size는 현재 디렉토리에 있는 모든 파일의 크기의 합계.
recursive_total_directory_size
디렉토리의 하위에 있는 모든 디렉토리에 있는 파일의 합계를 표시한다.
|
BLOCK |
수집한 데이타가 파일이라면, 파일에 할당된 디스크 블럭의 개수가 표시되고,
수집한 데이타가 디렉토리라면, 그 디랙토리에 포함된 모든 파일에 할당된 디스크 블럭의 개수의 합계를 표시하고,
콜론(:)으로 분리한 다름에, 그 디렉토리의 하위에 있는 모든 디렉토리에 있는 파일에 할당된 디스크의 블럭의 개수의 합계를 표시한다.
1 블럭은 512 바이트이다.
current_directory_size:recursive_total_directory_size
current_directory_size는 현재 디렉토리에 있는 모든 파일에 할당된 디스크의 블럭의 개수의 합계
recursive_total_directory_size
현재 디렉토리의 하위에 있는 모든 디렉토리에 있는 파일에 할당된 디스크의 블럭의 개수의 합계.
|
---|
UID |
파일 또는 디렉토리의 사용자 ID를 표시한다.
|
GID |
파일 또는 디렉토리의 그룹 ID를 표시한다.
|
NDIR |
수집한 데이타가 파일이라면, - 가 표시되고,
수집한 데이타가 디렉토리라면, 다음과 같이 콜론으로 분리된 2개의 NDIR를 표시한다.
current_ndir:recursive_total_ndir
current_ndir은 현재 디렉토리에 있는 디렉토리의 개수를 표시한다.
recursive_total_ndir은 현재 디렉토리 및 그 하위에 있는 모든 디렉토리의 개수의 총합을 표시한다.
|
NFILE |
수집한 데이타가 파일이라면, - 가 표시되고,
수집한 데이타가 디렉토리라면, 다음과 같이 콜론으로 분리된 2개의 NFILE를 표시한다.
current_nfile:recursive_total_nfile
current_nfile은 현재 디렉토리에 있는 파일의 개수를 표시한다.
recursive_total_nfile은 현재 디렉토리 및 그 하위에 있는 모든 파일의 개수의 총합을 표시한다.
|
MODE |
파일 또는 디렉토리의 모드를 16진수호 표시한다.
모드는 파일의 종류와 퍼미션 정보를 포함하고 있다.
|
DATE |
파일 또는 디렉토리의 최종 변경 시간을 16진수로 표시한다.
|
FILE |
파일 또는 디렉토리 이를을 표시한다.
|
다음은 jfind 명령어의 옵션이다.
옵션 | 설명 |
-d |
파일 정보를 수집할 때, hard link 파일의 원본 정보를 수집하지 않는다.
hard link와 심볼릭 링크는 다음과 같이 ln 명령어로 만들 수 있다.
# head jfind_root.out
$ ls -l
total 8
-rw-r--r-- 1 guest other 791 Nov 10 16:33 aaa
$ ln aaa hhh
$ ls -li
total 24
4043110485 -rw-r--r-- 2 guest other 791 Nov 10 16:33 aaa
4043110485 -rw-r--r-- 2 guest other 791 Nov 10 16:33 hhh
|
위의 예제에서 'ln aaa hhh' 명령어에 의해 hhh라는 hard link 파일이 생성되었다.
위에 있는 'ls -li' 명령어의 실행 결과를 보면, 첫번쨰 컬럼에 4043110485 숫자가 파일의 inode 번호를
나타내는데, aaa 파일과 hhh 파일이 동일한 것을 알 수 있다. 즉, 두개의 파일은 동일한 파일이라는 것을
알 수 있다.
jfind 명령어가 데티타를 수집할 때, 첫번째 수집된 hard link 파일을 원본 파일로 간주한다.
그 다음에 수집된 hard link 파일은 원본 파일 정보를 포함하고 있다.
=> 표시를 사용하여, 다음과 같이 hard link 원본 파일을 표시한다.
hhh => aaa
다른 예를 하나 더 보면, 다음과 같다.
/usr/bin/vi => /usr/bin/edit
-d 옵션을 지정하면, hard link 원본 파일 정보를 출력하지 않게 한다. 즉, -d 옵션을 지정하면,
파일명에 '/usr/bin/vi => /usr/bin/edit' 로 표시될 것이 '/usr/bin/vi' 로 표시된다.
|
-o outfile [-t | -T] |
-o 옵션을 사용하여 jfind 명령어의 출력을 파일로 저장할 수 있다.
-o 옵션을 지정하지 않으면, 표준출력으로 출력을 보낸다.
-t 옵션을 지정하면, -o 옵션에 지정한 파일명에 YYYY-MM-DD.HHMMSS 날짜와 시간정보를 덧붙인다.
-T 옵션을 지정하면, -o 옵션에 지정한 파일명에 YYYY-MM-DD 날짜정보를 덧붙인다.
다음과 같이 -t 또는 -T 옵션을 지정하면, 다음과 같이 날짜와 시간 정보를 덧붙인다.
-o jfind_root.out -t ---> jfind_root.out.2018-09-31.133012
-o jfind_root.out -T ---> jfind_root.out.2018-09-31
|
-s |
-s 옵션을 지정하면,
다음의 정보만 수집한다.
T SIZE BLOCK TOTAL_SIZE TOTAL_BLOCK UID FILE
다음의 정보는 수집하지 않는다.
GID NDIR NFILE MODE DATE
단순히 파일의 크기 정도를 간단히 볼 경우에 이 옵션을 사용할 수 있다.
|
-V |
-V 옵션을 지정하면, 명령어의 버전 정보를 보여준다.
|
|