home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


UNIX Power Tools

UNIX Power ToolsSearch this book
Previous: 39.5 Why Is the System So Slow? Chapter 39
Time and Performance
Next: 39.7 Checking System Load: uptime
 

39.6 lastcomm: What Commands Are Running and How Long Do They Take?

When you're debugging a problem with a program, trying to figure out why your CPU usage bill is so high, or curious what commands someone (including yourself) is running, the lastcomm command on Berkeley-like UNIXes can help (if your computer has its process accounting system running, that is). Here's an example that lists the user lesleys :

% 

date


Mon Sep  4 16:38:13 EDT 1995
% 

lastcomm lesleys


emacs          lesleys  ttyp1      1.41 secs Wed Sep  4 16:28
cat          X lesleys  ttyp1      0.06 secs Wed Sep  4 16:37
stty           lesleys  ttypa      0.02 secs Wed Sep  4 16:36
tset           lesleys  ttypa      0.12 secs Wed Sep  4 16:36
sed            lesleys  ttypa      0.02 secs Wed Sep  4 16:36
hostname       lesleys  ttypa      0.00 secs Wed Sep  4 16:36
quota          lesleys  ttypa      0.16 secs Wed Sep  4 16:35
   ...

The processes are listed in the order completed, most-recent first. The emacs process on the tty ttyp1 ( 3.8 ) started ten minutes ago and took 1.41 seconds of CPU time. Sometime while emacs was on ttyp1, lesleys ran cat and killed it (the X shows that). Because emacs ran on the same terminal as cat but finished later, Lesley might have stopped emacs (with CTRL-z) ( 12.1 ) to run cat . The processes on ttypa are the ones run from her .cshrc and .login files (though you can't tell that from lastcomm ). You don't see the login shell for ttypa ( csh ) here because it hasn't terminated yet; it'll be listed after Lesley logs out of ttypa.

lastcomm can do more. See its manual page.

Here's a hint: on a busy system with lots of users and commands being logged, lastcomm is pretty slow. If you pipe the output or redirect it into a file, like this:





tee
 

% 

lastcomm lesleys > lesley.cmds &


% 

cat lesley.cmds


   
...nothing...

% 

lastcomm lesleys | tee lesley.cmds


   
...nothing...

then the lastcomm output may be written to the file or pipe in big chunks instead of line-by-line. That can make it look as if nothing's happening. If you can tie up a terminal while lastcomm runs, there are two workarounds. If you're using a window system or terminal emulator with a "log to file" command, use it while lastcomm runs. Otherwise, to copy the output to a file, start script ( 51.5 ) and then run lastcomm :

% 

script lesley.cmds


Script started, file is lesley.cmds
% 

lastcomm lesleys


emacs          lesleys  ttyp1      1.41 secs Wed Sep  4 16:28
cat          X lesleys  ttyp1      0.06 secs Wed Sep  4 16:37
   ...

% 

exit


Script done, file is lesley.cmds
%

A final word: lastcomm can't give information on commands that are built into the shell ( 1.10 ) . Those commands are counted as part of the shell's execution time; they'll be in an entry for csh , sh , etc. after the shell terminates.

- JP


Previous: 39.5 Why Is the System So Slow? UNIX Power Tools Next: 39.7 Checking System Load: uptime
39.5 Why Is the System So Slow? Book Index 39.7 Checking System Load: uptime

The UNIX CD Bookshelf Navigation The UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System