Как мне регистрировать программы, которые я запускаю и когда (в Ubuntu)?

418
pcapademic

Я хотел бы легко прочитать журнал, когда было запущено определенное приложение. Журнал должен содержать метку времени и записывать действия, которые я предпринял, например, когда я запустил браузер или запустил игру.

1

4 ответа на вопрос

1
James Polley

Bash записывает историю всех команд, которые вы запускаете, и вы также можете записать временную метку - см. Http://larsmichelsen.com/open-source/bash-timestamp-in-bash-history/ для получения дополнительной информации.

Но история bash не вечна, и она по-прежнему записывает только то, что вы запускаете из командной строки.

1
ℝaphink

Ваше собственное предложение совсем не плохо. Такой сценарий может иметь вид

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

Теперь вы можете очень легко редактировать записи в меню запуска вашего рабочего стола, чтобы использовать оболочку каждый раз, когда вы запускаете определенную программу.

Другой вариант - использовать sudo, который автоматически регистрируется в auth.log, но использует его таким образом, чтобы он не запускал программы как root, то есть:

sudo -u $USER firefox 

который запустит Firefox от себя, используя sudo.

Например:

$ 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

Одной из возможностей было бы написать небольшой bash-скрипт вида

$ myLogging firefox 

в этом примере регистрируется время запуска Firefox, а затем просто запускается Firefox.

Однако для этого потребуется, чтобы я выполнял все свои действия, такие как запуск приложения, из командной строки. Кроме того, что если я захочу запустить firefox с некоторыми собственными аргументами?

0

Я не знаю, доступен ли 'snoopy' для Ubuntu, но в Debian каждая команда, которую вы запускаете, регистрирует в /var/log/auth.log.