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