start page | rating of books | rating of authors | reviews | copyrights

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