리눅스 명령어 – stat
stat
명령어를 사용하면 리눅스 시스템 내 디렉토리나 파일의 다양한 정보를 확인할 수 있습니다.
일반적으로 우리가 자주 사용하는 ls
명령어와는 다르게 요약되지 않은 정보를 출력함으로서, 파일의 권한이나 수정 시각을 자세히 알고 싶다면 stat
을 사용하는 것이 좋습니다.
stat
명령어로 알 수 있는 대략적인 정보는 다음과 같습니다.
- Inode : inode(아이노드) 번호
- Uid, Gid : 소유자 및 그룹의 이름과 UID 및 GID
- Links : 링크된 파일의 수
- Context : 보안 정책(SELinux Policy) 정보
- Access(상단) : 권한 정보
- Access(하단) : 접근 시각(atime) 정보
- Modify : 수정 시각(mtime) 정보
- Change : 변경 시각(ctime) 정보
사용 방법
stat
을 사용할 때 파일이나 디렉토리를 인자값으로 지정하면 해당 파일의 상세 정보를 출력할 수 있습니다.
$ stat testfile File: ‘testfile’ Size: 5 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 101254431 Links: 1 Access: (0777/-rwxrwxrwx) Uid: ( 1000/ user) Gid: ( 1000/ user) Context: unconfined_u:object_r:user_home_t:s0 Access: 2019-01-13 20:22:51.408946787 +0900 Modify: 2019-01-13 20:22:53.234352063 +0900 Change: 2019-01-13 20:22:53.237602043 +0900 Birth: -
여러 파일이나 디렉토리를 인자값으로 지정하여 한 번에 파일 정보를 확인할 수 있습니다. 여기에는 와일드카드 규칙(예 : stat testfile*
)도 사용할 수 있습니다.
$ stat testfile1 testfile2 File: ‘testfile1’ Size: 90 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 101546507 Links: 1 Access: (0775/-rwxrwxr-x) Uid: ( 1000/ user) Gid: ( 1000/ user) Context: unconfined_u:object_r:user_home_t:s0 Access: 2019-01-13 20:38:00.132684633 +0900 Modify: 2019-01-13 20:38:00.132684633 +0900 Change: 2019-01-13 20:38:00.133767959 +0900 Birth: - File: ‘testfile2’ Size: 5 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 101546506 Links: 1 Access: (0775/-rwxrwxr-x) Uid: ( 1000/ user) Gid: ( 1000/ user) Context: unconfined_u:object_r:user_home_t:s0 Access: 2019-01-13 20:37:49.077334881 +0900 Modify: 2019-01-13 20:37:49.077334881 +0900 Change: 2019-01-13 20:37:49.077334881 +0900 Birth: -
응용하자면 --printf
옵션을 사용하여 원하는 값만 출력할 수 있습니다. 자세한 포맷은 man stat
을 입력하여 확인할 수 있습니다. 아래는 inode 번호만 출력하는 예시입니다.
$ stat --printf="Inode : %i \n" testfile1 Inode : 101546507