1

I would like an easy to read log of when a particular application was started. The log needs to include a timestamp and to record the actions I took, for example when I launched a browser or launched a game.

4 Answers 4

1

Bash records history of all the commands you run, and you can have it record a timestamp as well - see http://larsmichelsen.com/open-source/bash-timestamp-in-bash-history/ for more.

But the bash history doesn't hang around forever, and it still only records things you run from the command line.

1

Your own proposal is not bad at all. Such a script could be something of the form

#!/bin/bash

# Get the program you wish to launch from arguments
PROGNAME="$1"
# Shift script arguments to use the remaining ones later
shift

# Check that a PROGNAME was provided
if [ -z "$PROGNAME" ]; then
   echo "Usage: $0 <program> [program options]"
   exit 1
fi

# Log in your home directory, one directory per program
LOGDIR="$HOME/logs/$PROGNAME"

# Create log directory if it doesn't exist yet
if [ ! -d "$LOGDIR" ]; then
   mkdir -p "$LOGDIR"
fi

# Get the date now
DATE=$(date +'%Y%m%d%H%M%S')

# Start program with it's options and log into the logdir
eval "$PROGNAME" $@ >"${LOGDIR}/${PROGNAME}_${DATE}.log" 2>"${LOGDIR}/${PROGNAME}_${DATE}.err"

Now you could very well edit the entries in your desktop launch menu to use your wrapper everytime you launch a certain program.

Another option would be to use sudo, which logs to auth.log automatically, but use it in such a way that it doesn't launch the programs as root, that is:

sudo -u $USER firefox

which will launch firefox as yourself, using sudo.

For example:

$ sudo -u $USER ksnapshot
# I kill the program
$ tail -1 /var/log/auth.log
   Dec 28 08:20:07 jonah sudo:  raphink : TTY=pts/1 ; PWD=/home/raphink ; USER=raphink ; COMMAND=/usr/bin/ksnapshot
0
0

One possibility would be to write a small bash script of the form

$ myLogging firefox

that would log the time that, in this example, firefox started and then simply start firefox.

This would require, however, that I do all my actions, such as starting an application, from the command line. Also, what if I wanted to start firefox with some arguments of its own?

0

I don't know whether 'snoopy' is available for Ubuntu, but on Debian it logs every command you've run to /var/log/auth.log .

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .