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 :
%dateMon Sep 4 16:38:13 EDT 1995 %lastcomm lesleysemacs 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  | 
%  | 
|---|
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.cmdsScript started, file is lesley.cmds %lastcomm lesleysemacs lesleys ttyp1 1.41 secs Wed Sep 4 16:28 cat X lesleys ttyp1 0.06 secs Wed Sep 4 16:37 ... %exitScript 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.
-