The software described in this documentation is either in Extended Support or Sustaining Support. See https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdf for more information.
Oracle recommends that you upgrade the software described by this documentation as soon as possible.
The /dev
directory contains device
files (also sometimes known as device special
files and device nodes) that
provide access to peripheral devices such as hard disks, to
resources on peripheral devices such as disk partitions, and
pseudo devices such as a random number generator.
The /dev
directory has several subdirectory
hierarchies, each of which holds device files that relate to a
certain type of device. For example, the
/dev/disk/id-by-uuid
directory contains device
files for hard disks named according to the universally unique
identifier (UUID) for the disk. The device files in subdirectories
such as these are actually implemented as symbolic links to device
files in /dev
. You can access the same device
using the file in /dev
or the corresponding
link to the file listed in
/dev/disk/id-by-uuid
.
If you use the ls -l command to list the files
under /dev
, you see that some device files are
shown as being either type b
for
block or type c
for
character. These devices have a pair of
numbers associated with them instead of a file size. These
major and minor numbers
identify the device to the system.
# ls -l /dev
total 0
crw-rw----. 1 root root 10, 56 Mar 17 08:17 autofs
drwxr-xr-x. 2 root root 640 Mar 17 08:17 block
drwxr-xr-x. 2 root root 80 Mar 17 08:16 bsg
drwxr-xr-x. 3 root root 60 Mar 17 08:16 bus
lrwxrwxrwx. 1 root root 3 Mar 17 08:17 cdrom -> sr0
drwxr-xr-x. 2 root root 2880 Mar 17 08:17 char
crw-------. 1 root root 5, 1 Mar 17 08:17 console
lrwxrwxrwx. 1 root root 11 Mar 17 08:17 core -> /proc/kcore
drwxr-xr-x. 4 root root 100 Mar 17 08:17 cpu
crw-rw----. 1 root root 10, 61 Mar 17 08:17 cpu_dma_latency
drwxr-xr-x. 6 root root 120 Mar 17 08:16 disk
brw-rw----. 1 root disk 253, 0 Mar 17 08:17 dm-0
brw-rw----. 1 root disk 253, 1 Mar 17 08:17 dm-1
...
crw-rw-rw-. 1 root root 1, 3 Mar 17 08:17 /dev/null
...
drwxr-xr-x. 2 root root 0 Mar 17 08:16 pts
...
crw-rw-rw-. 1 root root 1, 8 Mar 17 08:17 random
...
brw-rw----. 1 root disk 8, 0 Mar 17 08:17 sda
brw-rw----. 1 root disk 8, 1 Mar 17 08:17 sda1
brw-rw----. 1 root disk 8, 2 Mar 17 08:17 sda2
...
lrwxrwxrwx. 1 root root 15 Mar 17 08:17 stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Mar 17 08:17 stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Mar 17 08:17 stdout -> /proc/self/fd/1
...
crw--w----. 1 root tty 4, 0 Mar 17 08:17 tty0
crw--w----. 1 root tty 4, 1 Mar 17 08:17 tty1
...
crw-rw-rw-. 1 root root 1, 9 Mar 17 08:17 urandom
...
crw-rw-rw-. 1 root root 1, 5 Mar 17 08:17 zero
Block devices support random access to data, seeking media for
data, and usually allow data to be buffered while it is being
written or read. Examples of block devices include hard disks,
CD-ROM drives, flash memory, and other addressable memory devices.
The kernel writes data to or reads data from a block device in
blocks of a certain number of bytes. In the sample output,
sda
is the block device file that corresponds
to the hard disk, and it has a major number of 8 and a minor
number of 0. sda1
and sda2
are partitions of this disk, and they have the same major number
as sda
(8), but their minor numbers are 1 and
2.
Character devices support streaming of data to or from a device,
and data is not usually buffered nor is random access permitted to
data on a device. The kernel writes data to or reads data from a
character device one byte at a time. Examples of character devices
include keyboards, mice, terminals, pseudo-terminals, and tape
drives. tty0
and tty1
are
character device files that correspond to terminal devices that
allow users to log in from serial terminals or terminal emulators.
These files have major number 4 and minor numbers 0 and 1.
Pseudo-terminals secondary devices emulate real terminal devices
to interact with software. For example, a user might log in on a
terminal device such as /dev/tty1
, which then
uses the pseudo-terminal primary device
/dev/pts/ptmx
to interact with an underlying
pseudo-terminal device. The character device files for
pseudo-terminal secondary servers and primary are located in the
/dev/pts
directory:
# ls -l /dev/pts
total 0
crw--w----. 1 guest tty 136, 0 Mar 17 10:11 0
crw--w----. 1 guest tty 136, 1 Mar 17 10:53 1
crw--w----. 1 guest tty 136, 2 Mar 17 10:11 2
c---------. 1 root root 5, 2 Mar 17 08:16 ptmx
Some device entries, such as stdin
for the
standard input, are symbolically linked via the
self
subdirectory of the
proc
file system. The pseudo-terminal device
file to which they actually point depends on the context of the
process.
# ls -l /proc/self/fd/[012] total 0 lrwx------. 1 root root 64 Mar 17 10:02 0 -> /dev/pts/1 lrwx------. 1 root root 64 Mar 17 10:02 1 -> /dev/pts/1 lrwx------. 1 root root 64 Mar 17 10:02 2 -> /dev/pts/1
Character devices such as null
,
random
, urandom
, and
zero
are examples of pseudo-devices that
provide access to virtual functionality implemented in software
rather than to physical hardware.
/dev/null
is a data sink. Data that you write
to /dev/null
effectively disappears but the
write operation succeeds. Reading from
/dev/null
returns EOF
(end-of-file).
/dev/zero
is a data source of an unlimited
number of zero-value bytes.
/dev/random
and /dev/urandom
are data sources of streams of pseudo-random bytes. To maintain
high-entropy output, /dev/random
blocks if its
entropy pool does not contains sufficient bits of noise.
/dev/urandom
does not block and, as a result,
the entropy of its output might not be as consistently high as
that of /dev/random
. However, neither
/dev/random
nor /dev/urandom
are considered to be truly random enough for the purposes of
secure cryptography such as military-grade encryption.
You can find out the size of the entropy pool and the entropy
value for /dev/random
from virtual files under
/proc/sys/kernel/random
:
#cat /proc/sys/kernel/random/poolsize
4096 #cat /proc/sys/kernel/random/entropy_avail
3467
For more information, see the null(4)
,
pts(4)
, and random(4)
manual
pages.