identify the unix process performing high disk i/o reads and writes

Guys,

Is there any UNIX command that captures the 'Unix process which is performing high disk I/O reads and writes'.

can you help me in this?

-Swamy

try iostat or vmstat

iostat alone won't tell you the process which is doing the most I/O. A combination of iostat -p and lsof should give you what you're looking for.

Thanks .
Can any one give me the script/command which gives the output as below format.
PID I/O READS I/OWRITES I/O WAIT
--- ----------- ---------- ---------

Please state exact version of Unix/Linux concerned.

You aren't going to be able to get the exact output you want with the standard Unix/Linux commands very easily, if at all. Mapping disk I/O by process is not a trivial task.

If you are using Solaris 10,
a Dtrace script can probably be developed to do this:

DTrace at OpenSolaris.org
(see the scripts section - there are some examples on Brendan Gregg's page that are close to your request).

If you are using HP-UX, you could develop a custom measureware/glance script and syntax file to get stats close to what you need.

Not sure of what you'd need for Linux to be able to get this data, but it's most likely going to be add-on.

Edit: Glance is available for RHEL

If you have unix Process Accounting running there is a whole suite of
supplied scripts to record data and find historic details of processes.
For an overview see:

man acct
man acctcms
man acctcom

Setting up unix Process Accounting from scratch is not trivial. On a busy
system it can need very large amounts of disc space and become a significant
load on your system itself.

If you are running a database engine such as Oracle, I/O statistics can
usually be obtained from the database engine.