11.2 Files and File Systems
11.2.1 Determine the File Type: file
The command file determines the type of a file or a
list of files by checking /etc/magic.
tux@mercury:~> file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), \
for GNU/Linux 2.6.4, dynamically linked (uses shared libs), stripped
The parameter -f list
specifies a file with a list of filenames to examine. The
-z allows file to look inside
compressed files:
tux@mercury:~> file /usr/share/man/man1/file.1.gz
usr/share/man/man1/file.1.gz: gzip compressed data, from Unix, max compression
tux@mercury:~> file -z /usr/share/man/man1/file.1.gz
/usr/share/man/man1/file.1.gz: ASCII troff or preprocessor input text \
(gzip compressed data, from Unix, max compression)
11.2.2 File Systems and Their Usage: mount, df, and du
The command mount shows which file system (device and
type) is mounted at which mount point:
tux@mercury:~> mount
/dev/sda3 on / type reiserfs (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
udev on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/sda1 on /boot type ext2 (rw,acl,user_xattr)
/dev/sda4 on /local type reiserfs (rw,acl,user_xattr)
/dev/fd0 on /media/floppy type subfs (rw,nosuid,nodev,noatime,fs=floppyfss,p
Obtain information about total usage of the file systems with the
command df. The parameter -h (or
--human-readable) transforms the output into a form
understandable for common users.
tux@mercury:~> df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 11G 3.2G 6.9G 32% /
udev 252M 104K 252M 1% /dev
/dev/sda1 16M 6.6M 7.8M 46% /boot
/dev/sda4 27G 34M 27G 1% /local
Display the total size of all the files in a given directory and its
subdirectories with the command du. The parameter
-s suppresses the output of detailed information.
-h again transforms the data into a human-readable
form:
tux@mercury:~> du -sh /local
1.7M /local
11.2.3 Additional Information about ELF Binaries
Read the content of binaries with the readelf
utility. This even works with ELF files that were built for other
hardware architectures:
tux@mercury:~> readelf --file-header /bin/ls
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x402430
Start of program headers: 64 (bytes into file)
Start of section headers: 98616 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 9
Size of section headers: 64 (bytes)
Number of section headers: 31
Section header string table index: 30
11.2.4 File Properties: stat
The command stat displays file properties:
tux@mercury:~> stat /etc/profile
File: '/etc/profile'
Size: 8080 Blocks: 16 IO Block: 4096 regular file
Device: 806h/2054d Inode: 64942 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2007-07-16 23:28:18.000000000 +0200
Modify: 2006-09-19 14:45:01.000000000 +0200
Change: 2006-12-05 14:54:55.000000000 +0100
The parameter --filesystem produces details of the
properties of the file system in which the specified file is located:
tux@mercury:~> stat /etc/profile --filesystem
File: "/etc/profile"
ID: 0 Namelen: 255 Type: reiserfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 2622526 Free: 1809771 Available: 1809771
Inodes: Total: 0 Free: 0