Vous êtes sur la page 1sur 3

Home About Bash Shell Index BashShell.

net

Understanding Linux File Types


by mike on January 4, 2011
Tw eet 25

There are seven basic types of file types in Linux. Regular Files Directories Character Device Files Block Device Files Local Domain Sockets Named Pipes Symbolic Links You can use the ls -l command to see the various types of files. In the following example, the first character in the output is a -, which indicates that its a regular file. ls -la /var/log/messages -rw- 1 root root 204909 Jun 5 10:50 /var/log/messages The next example shows that it is a directory as it starts with a d. ls -ld /etc drwxr-xr-x 105 root root 12288 Jun 5 08:36 . File Type Encoding When Using ls Regular file Directory d Character Device c Block Device b Local Domain Socket s Named Pipe p Symbolic Link l Device files facilitate the communication between hardware and software. The kernel manages modules that know how to communicate with system devices. These device drivers create a standard method of communication with the hardware. They look like regular files. When the kernel receives a request for a character or block device it contacts the right device driver to take care of the communication.

Device files are assigned both a major and a minor number. (An ls -l command will show you these instead of the file size that youd see for regular files.) The major number refers to the device driver, and the minor number tells you which physical device goes with that file. For example, the device files /dev/lp0 and /dev/lp1 would both have a major number of 6, indicating that they both represent parallel ports. Their minor numbers of 0 and 1, respectively, refer to two different lp devices on the same system. Major and minor numbers are very important to understand when you are scripting for software RAID devices for example. RAID devices are indicated with md0, etc. The major device number is 9 and then minor device number starts with 0 and will have to be incremented as you will need to create new RAID devices in order to add more than one RAID device on a server. Local Domain Sockets, often called UNIX Domain Sockets, allow local processes to communicate with each other. This is similar to how network sockets allow global communications with other hosts. You can use the netstat command to view domain sockets. netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 2 [] DGRAM 1547 @/org/kernel/udev/udevd unix 2 [] DGRAM 9009 @/org/freedesktop/hal/udev_event unix 28 [ ] DGRAM 7384 /dev/log unix 3 [] STREAM CONNECTED 23307 /tmp/orbit-mike/linc-151b-0-472aed0fe5012 unix 3 [] STREAM CONNECTED 23306 unix 3 [] STREAM CONNECTED 23285 unix 3 [] STREAM CONNECTED 23274 /tmp/orbit-mike/linc-151b-0-472aed0fe5012 Named pipes, also known as FIFO files, are another type of inter-process communications device. Symbolic links are special files that point to either another file or to a directory. Example: ln -s /var/log/dmesg /home/mike/dmesg Here you can see the link that was created. lrwxrwxrwx 1 mike mike 14 Jun 5 14:13 dmesg -> /var/log/dmesg Device nodes will allow users access to device files. These can be listed with: ls -l /dev ls -l /dev total 0 crw- 1 root root 36, 8 May 9 02:10 arpd lrwxrwxrwx 1 root root 3 May 9 02:10 cdrom -> hdc lrwxrwxrwx 1 root root 3 May 9 02:10 cdwriter -> hdc

crw- 1 mike root 5, 1 May 9 08:10 console lrwxrwxrwx 1 root root 11 May 9 02:10 core -> /proc/kcore crw- 1 root root 36, 14 May 9 02:10 dnrtmsg lrwxrwxrwx 1 root root 3 May 9 02:10 dvd -> hdc lrwxrwxrwx 1 root root 3 May 9 02:10 dvdwriter -> hdc crw- 1 root root 13, 64 May 9 02:10 event0 lrwxrwxrwx 1 root root 13 May 9 02:10 fd -> /proc/self/fd brw-rw- 1 mike floppy 2, 0 May 9 08:10 fd0 cut lrwxrwxrwx 1 root root 3 May 9 08:10 floppy -> fd0 crw-rw-rw- 1 root root 1, 7 May 9 02:10 full crw- 1 root root 36, 3 May 9 02:10 fwmonitor srwx 1 mike root 0 May 9 08:13 gpmctl brw-rw- 1 root disk 3, 0 May 9 02:10 hda brw-rw- 1 root disk 3, 1 May 9 02:10 hda1 brw-rw- 1 root disk 3, 2 May 9 02:10 hda2 brw-rw- 1 root disk 3, 3 May 9 02:10 hda3 brw-rw- 1 root disk 3, 64 May 9 02:10 hdb brw-rw- 1 root disk 3, 65 May 9 02:10 hdb1 brw- 1 mike disk 22, 0 May 9 02:10 hdc brw-rw- 1 root disk 22, 64 May 9 02:10 hdd brw-rw- 1 root disk 22, 65 May 9 02:10 hdd1 The device nodes consist of two types; character (stream-orientated) and block (random access). In the list you can see the c for character and the b for block at the start of each line. Again, note that file ownership and permissions are a part of the device nodes. In addition, each node has a major and minor number. The major number represents a specific device driver that is in the kernel while the minor number points to the device it indexes. Device nodes can be created with the /bin/mknod command: mknod device type major minor mknod /dev/md1 b 9 1 This command would indicate that the device md1is a block device with a major number of 9, meaning it is a software RAID device, and a minor number of 1. The kernel source contains a document called devices.txt which lists all of the major and minor numbers. Tagged as: File Types Comments on this entry are closed. Previous post: Recording User Activity with a Script Next post: Linux Command: tr

Vous aimerez peut-être aussi