Como faço para registrar os programas que estou executando e quando (no Ubuntu)?

1

Eu gostaria de um log de fácil leitura quando um aplicativo específico foi iniciado. O log precisa incluir um registro de data e hora e registrar as ações que tomei, por exemplo, quando lancei um navegador ou iniciei um jogo.

    
por pcapademic 28.12.2009 / 07:34

4 respostas

1

O Bash registra o histórico de todos os comandos que você executa e também pode registrar um timestamp - veja link para mais.

Mas o histórico do bash não fica pendurado para sempre e ainda registra apenas as coisas que você executa na linha de comando.

    
por 28.12.2009 / 07:42
1

Sua própria proposta não é ruim. Tal script poderia ser algo da forma

#!/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"

Agora você pode muito bem editar as entradas no menu de inicialização da área de trabalho para usar o wrapper sempre que iniciar um determinado programa.

Outra opção seria usar o sudo, que registra automaticamente no auth.log, mas o utiliza de tal forma que ele não lança os programas como root, ou seja:

sudo -u $USER firefox

que irá lançar o firefox como você mesmo, usando o sudo.

Por exemplo:

$ 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
    
por 28.12.2009 / 08:18
0

Uma possibilidade seria escrever um pequeno script bash do formulário

$ myLogging firefox

que registraria o tempo que, neste exemplo, o firefox iniciou e depois simplesmente iniciará o firefox.

Isso exigiria, no entanto, que eu fizesse todas as minhas ações, como iniciar um aplicativo, na linha de comando. Além disso, e se eu quisesse começar o firefox com alguns argumentos próprios?

    
por 28.12.2009 / 07:38
0

Eu não sei se 'snoopy' está disponível para o Ubuntu, mas no Debian ele registra todos os comandos que você executou em /var/log/auth.log.

    
por 28.12.2009 / 14:28