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 |
% |
---|
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.
-