Wie protokolliere ich die Programme und wann (auf Ubuntu)?

482
pcapademic

Ich möchte ein leicht lesbares Protokoll darüber, wann eine bestimmte Anwendung gestartet wurde. Das Protokoll muss einen Zeitstempel enthalten und die von mir durchgeführten Aktionen aufzeichnen, z. B. wenn ich einen Browser oder ein Spiel gestartet habe.

1

4 Antworten auf die Frage

1
James Polley

Bash zeichnet den Verlauf aller Befehle auf, die Sie ausführen, und Sie können auch einen Zeitstempel aufzeichnen . Weitere Informationen finden Sie unter http://larsmichelsen.com/open-source/bash-timestamp-in-bash-history/ .

Die Bash-Historie hängt jedoch nicht für immer herum und zeichnet nur die Dinge auf, die Sie über die Befehlszeile ausführen.

1
ℝaphink

Ihr eigener Vorschlag ist überhaupt nicht schlecht. Ein solches Skript könnte etwas von der Form sein

#!/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" $@ >"$/$_$.log" 2>"$/$_$.err" 

Nun können Sie die Einträge in Ihrem Desktop-Startmenü so bearbeiten, dass Sie Ihren Wrapper jedes Mal verwenden, wenn Sie ein bestimmtes Programm starten.

Eine andere Option wäre die Verwendung von sudo, das automatisch in auth.log protokolliert, aber so verwendet wird, dass die Programme nicht als root gestartet werden, das heißt:

sudo -u $USER firefox 

das wird firefox als sich selbst starten, mit sudo.

Zum Beispiel:

$ 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
pcapademic

Eine Möglichkeit wäre, ein kleines Bash-Skript des Formulars zu schreiben

$ myLogging firefox 

Das würde die Zeit protokollieren, zu der Firefox in diesem Beispiel gestartet wurde, und dann einfach Firefox starten.

Dies würde jedoch erfordern, dass ich alle meine Aktionen, z. B. das Starten einer Anwendung, von der Befehlszeile aus durchführe. Und was wäre, wenn ich Firefox mit eigenen Argumenten beginnen wollte?

0

Ich weiß nicht, ob "snoopy" für Ubuntu verfügbar ist, aber unter Debian werden alle Befehle protokolliert, die Sie in /var/log/auth.log ausgeführt haben.