파일이나 파일시스템의 상태를 보여주는 명령어

사용법 : stat [옵션] 파일명 
-l : 링크파일의 소스파일 정보를 보여준다. 
-f : 파일명이 있는 파일시스템의 정보를 보여준다. 
-v : 버전정보를 보여준다. 
-t : 간략한 정보를 보여준다. 

stat 명령은 파일이나 파일시스템의 사이즈나, 블록, IO블록, 엑세스 날짜, 수정날짜 등을 살펴 볼수 있다.
아래와 같이 stat04.hwp파일을 한 번 살펴보자. 파일에 대한 크기, 블록, IO블록, 장치 및 아이노드 등의 자세한 정보를 보여준다.

# stat stat04.hwp 
  File: "stat04.hwp" 
  Size: 30028077        Blocks: 58728      IO Block: -4611691997021859840 Regular File 
Device: 805h/2053d      Inode: 912254      Links: 1    
Access: (0644/-rw-r--r--)  Uid: (  501/  root)   Gid: (  501/  root) 
Access: Sat Apr 10 18:44:20 2004 
Modify: Thu Oct  3 10:22:20 2002 
Change: Sat Apr 10 18:22:00 2004 

-f 옵션은 파일명이 있는 파일시스템의 정보를 보여준다.

# stat -f stat04.hwp 
  File: "stat04.hwp" 
    ID: 0        0        Namelen: 255     Type: EXT2/EXT3 
Blocks: Total: 2883836    Free: 2458861    Available: 2312369    Size: 4096 
Inodes: Total: 1465920    Free: 1401429 

디렉토리를 지정하여 디렉토리의 상태를 볼 수도 있다.

$ stat / 
  File: "/" 
  Size: 4096            Blocks: 8          IO Block: -4611706771709358080 Directory 
Device: 805h/2053d      Inode: 2           Links: 19    
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root) 
Access: Sun Apr 11 04:02:10 2004 
Modify: Sat Apr 10 18:39:59 2004 
Change: Sat Apr 10 18:39:59 2004 
2005/06/16 19:16 2005/06/16 19:16
시스템 콜과 신호를 추적하여 프로그램의 실행 과정을 살펴 볼 수 있게 하는 명령어이다.

사용법 : strace [옵션] 명령어 [매개변수] 

strace 명령은 시스템 콜과 신호를 추적해서 진단하고 디버깅해 주는 도구로써, 프로그렘에서 실행되는 프로세스가 어떤 것인지 추적이 가능하다.
이외에도, 바이너리 파일에 어떤 경로 이름이 컴파일되어 있는지 살펴보거나, 조건을 살펴 볼 경우, 혹은 바이너리 파일의 동작 원리를 알아 볼 경우에도 사용이 가능하다. 아래 예제와 같이 strace 명령을 실행해 보자. 이는 ls 명령에 대한 다양한 컴파일 경로나 조건, 동작에 대한 정보를 살펴 볼 수 있다.

# strace ls 
execve("/bin/ls", ["ls"], [/* 18 vars */]) = 0 
uname({sys="Linux", node="airz.net", ...}) = 0 
brk(0)                                  = 0x8053dc4 
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory) 
open("/etc/ld.so.cache", O_RDONLY)      = 3 
fstat64(3, {st_mode=S_IFREG|0644, st_size=25806, ...}) = 0 
old_mmap(NULL, 25806, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40014000 
close(3)                                = 0 
open("/lib/libtermcap.so.2", O_RDONLY)  = 3 
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260\r\0"..., 1024) = 1024 
fstat64(3, {st_mode=S_IFREG|0755, st_size=11832, ...}) = 0 
old_mmap(NULL, 14932, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4001b000 
mprotect(0x4001e000, 2644, PROT_NONE)   = 0 
old_mmap(0x4001e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0x4001e000 
close(3)                                = 0 
open("/lib/i686/libc.so.6", O_RDONLY)   = 3 
---------------------생략--------------------- 
2005/06/16 19:14 2005/06/16 19:14
오브젝트 또는 이진 파일에서 정상적으로 출력할 수 있는 문자열을 찾는 명령어이다.

사용법 : string [옵션] 파일 
-, -a, --all : 오브젝트 파일 전체를 검색한다. 
-f, --print-file-name : 각 문자열 전에 파일 이름을 보여준다. 
-min-len, -n min-len, --bytes=min-len : min-len 수로 최소 문자열의 길이를 지정한다. 기본값은 4이다. 
-o : -t옵션과 비슷하다. 
-t base, --radix=base : 지정한 base 포맷으로 각 문자열 앞에 오프셋을 보여준다. 
 아래는 지정 가능한 base 포맷들이다. 
   d : 오프셋을 십진수로 기록한다. 
   o : 오프셋을 8진수로 기록한다. 
   x : 오프셋을 16진수로 기록한다. 
--target=format : 지정한 포맷으로 시스템의 기본 코드 포맷으로 사용한다. 
-v, --version : 버전정보를 보여준다.

strings 명령은 오브젝트 또는 2진 파일에서 인쇄 가능한 문자열을 찾는다. 기본 문자열은 4자이다.
2005/06/16 19:10 2005/06/16 19:10