Monday, April 23, 2012

Linux Display System Statistics Gathered From /proc

How do I display information from /proc such as memory, Load average, uptime, page activity, context, disk status, interrupts using a shell or perl script?

You can write a shell or perl script to grab all info from /proc file system. But Linux comes with the procinfo command to gather some system data from the /proc directory and prints it nicely formatted on the screen.

Install procinfo Command

Open a command-line terminal (select Applications > Accessories > Terminal), and then type the following commands under Debian or Ubuntu Linux:
$ sudo apt-get update
$ sudo apt-get install procinfo

The command apt-get update is used tell apt to refresh its package information by querying the configured repositories and then install the procinfo package. If you are using CentOS / RHEL / Fedora / Redhat Linux, enter:
# yum install procinfo

How Do I Use procinfo Command?

Simply type the following command, enter:
# procinfo
Sample outputs:
Fig.01:  procinfo - display system statistics gathered from /proc
Fig.01: procinfo - display system statistics gathered from /proc

Where,
The information displayed is:
  • Memory: Display amount of free and used memory in the system
  • Bootup: The time the system was booted.
  • Load average: The average number of jobs running, followed by the number of runnable processes and the total number of processes, followed by the PID of the last process run. The pid of the last running process will probably always be procinfo's PID.
  • user: The amount of time spent running jobs in user space.
  • nice: The amount of time spent running niced jobs in user space.
  • system: The amount of time spent running in kernel space. Note: the time spent servicing interrupts is not counted by the kernel (and nothing that procinfo can do about it).
  • idle: The amount of time spent doing nothing.
  • uptime: The time that the system has been up. The above four should more or less add up to this one.
  • page in: The number of disk blocks paged into core from disk. 1 block is equal to 1 kiB.
  • page out: The number of disk blocks paged out of core to disk. This includes regular disk-writes.
  • swap in: The number of memory pages paged in from swap.
  • swap out: The number of memory pages paged out to swap.
  • context: The number of context switches, either since bootup or per interval.
  • Disk stats(sda, hda, sdb etc): The number of reads and writes made to disks, whether CD-ROM, hard-drive, or USB. Shows all disks if they either are an hdX or sdX, or if they have a non-zero read/write count.
  • Interrupts: Number of interrupts serviced since boot, or per interval, listed per IRQ.

Task: Run procinfo Continuously Full-screen

The -f option can run procinfo continuously on screen and the default is 5 seconds between update. The -n option can be used to set pause update time. In this example procinfo will pause 20 seconds between update:
# procinfo -f -n 20
You can change its behaviour by pressing d, D, S, r, b, and q which toggle the flags quits the program. The flags also correspond to their same-named commandline-options
       -d     For memory, CPU times, paging, swapping, disk, context and interrupt stats, display values per second rather than totals. This option implies -f.
-D Same as -d, except that memory stats are displayed as totals.
-S When running with -d or -D, always show values per second, even when running with -n N with N greater than one second.
-b Display numbers of bytes rather than number of I/O requests.
-r This option adds an extra line to the memory info showing 'real' free memory, just as free(1) does. The numbers produced assume that Buffers and Cache are disposable.
(Fig. 02: Source man page).

No comments:

Post a Comment