11.7.1 Memory Usage: free
The utility free examines RAM usage. Details of both
free and used memory and swap areas are shown:
tux@mercury:~> free
total used free shared buffers cached
Mem: 2062844 2047444 15400 0 129580 921936
-/+ buffers/cache: 995928 1066916
Swap: 2104472 0 2104472
The options
-b,-k,-m,-g
show output in bytes, KB, MB, or GB, respectively. The parameter
-d delay ensures that the display is refreshed every
delay seconds. For example, free -d
1.5 produces an update every 1.5 seconds.
11.7.2 User Accessing Files: fuser
It can be useful to determine what processes or users are currently
accessing certain files. Suppose, for example, you want to unmount a
file system mounted at /mnt.
umount returns "device is busy." The command
fuser can then be used to determine what processes
are accessing the device:
tux@mercury:~> fuser -v /mnt/*
USER PID ACCESS COMMAND
/mnt/notes.txt tux 26597 f.... less
Following termination of the less process, which was
running on another terminal, the file system can successfully be
unmounted.
11.7.3 Kernel Ring Buffer: dmesg
The Linux kernel keeps certain messages in a ring buffer. To view these
messages, enter the command dmesg:
$ dmesg
[...]
end_request: I/O error, dev fd0, sector 0
subfs: unsuccessful attempt to mount media (256)
e100: eth0: e100_watchdog: link up, 100Mbps, half-duplex
NET: Registered protocol family 17
IA-32 Microcode Update Driver: v1.14 <[email protected]>
microcode: CPU0 updated from revision 0xe to 0x2e, date = 08112004
IA-32 Microcode Update Driver v1.14 unregistered
bootsplash: status on console 0 changed to on
NET: Registered protocol family 10
Disabled Privacy Extensions on device c0326ea0(lo)
IPv6 over IPv4 tunneling driver
powernow: This module only works with AMD K7 CPUs
bootsplash: status on console 0 changed to on
Older events are logged in the files
/var/log/messages and
/var/log/warn.
11.7.4 List of Open Files: lsof
To view a list of all the files open for the process with process ID
PID, use -p. For example, to
view all the files used by the current shell, enter:
tux@mercury:~> lsof -p $$
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bash 5552 tux cwd DIR 3,3 1512 117619 /home/tux
bash 5552 tux rtd DIR 3,3 584 2 /
bash 5552 tux txt REG 3,3 498816 13047 /bin/bash
bash 5552 tux mem REG 0,0 0 [heap] (stat: No such
bash 5552 tux mem REG 3,3 217016 115687 /var/run/nscd/passwd
bash 5552 tux mem REG 3,3 208464 11867 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 882134 11868 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 1386997 8837 /lib/libc-2.3.6.so
bash 5552 tux mem REG 3,3 13836 8843 /lib/libdl-2.3.6.so
bash 5552 tux mem REG 3,3 290856 12204 /lib/libncurses.so.5.5
bash 5552 tux mem REG 3,3 26936 13004 /lib/libhistory.so.5.1
bash 5552 tux mem REG 3,3 190200 13006 /lib/libreadline.so.5.
bash 5552 tux mem REG 3,3 54 11842 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 2375 11663 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 290 11736 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 52 11831 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 34 11862 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 62 11839 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 127 11664 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 56 11735 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 23 11866 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 21544 9109 /usr/lib/gconv/gconv-m
bash 5552 tux mem REG 3,3 366 9720 /usr/lib/locale/en_GB.
bash 5552 tux mem REG 3,3 97165 8828 /lib/ld-2.3.6.so
bash 5552 tux 0u CHR 136,5 7 /dev/pts/5
bash 5552 tux 1u CHR 136,5 7 /dev/pts/5
bash 5552 tux 2u CHR 136,5 7 /dev/pts/5
bash 5552 tux 255u CHR 136,5 7 /dev/pts/5
The special shell variable $$, whose value is the
process ID of the shell, has been used.
The command lsof lists all the files currently open
when used without any parameters. Because there are often thousands of
open files, listing all of them is rarely useful. However, the list of
all files can be combined with search functions to generate useful
lists. For example, list all used character devices:
tux@mercury:~> lsof | grep CHR
bash 3838 tux 0u CHR 136,0 2 /dev/pts/0
bash 3838 tux 1u CHR 136,0 2 /dev/pts/0
bash 3838 tux 2u CHR 136,0 2 /dev/pts/0
bash 3838 tux 255u CHR 136,0 2 /dev/pts/0
bash 5552 tux 0u CHR 136,5 7 /dev/pts/5
bash 5552 tux 1u CHR 136,5 7 /dev/pts/5
bash 5552 tux 2u CHR 136,5 7 /dev/pts/5
bash 5552 tux 255u CHR 136,5 7 /dev/pts/5
X 5646 root mem CHR 1,1 1006 /dev/mem
lsof 5673 tux 0u CHR 136,5 7 /dev/pts/5
lsof 5673 tux 2u CHR 136,5 7 /dev/pts/5
grep 5674 tux 1u CHR 136,5 7 /dev/pts/5
grep 5674 tux 2u CHR 136,5 7 /dev/pts/5