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.
emacs process on the
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
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:
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 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. 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.