Я хотел бы легко прочитать журнал, когда было запущено определенное приложение. Журнал должен содержать метку времени и записывать действия, которые я предпринял, например, когда я запустил браузер или запустил игру.
4 ответа
Bash записывает историю всех команд, которые вы запускаете, и вы также можете записать временную метку - см. Http://larsmichelsen.com/open-source/bash-timestamp-in-bash-history/ для получения дополнительной информации.
Но история bash не вечна, и она по-прежнему записывает только то, что вы запускаете из командной строки.
Ваше собственное предложение совсем не плохо. Такой сценарий может иметь вид
#!/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"
Теперь вы можете очень легко редактировать записи в меню запуска вашего рабочего стола, чтобы использовать оболочку каждый раз, когда вы запускаете определенную программу.
Другой вариант - использовать 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
Одной из возможностей было бы написать небольшой bash-скрипт вида
$ myLogging firefox
в этом примере регистрируется время запуска Firefox, а затем просто запускается Firefox.
Однако для этого потребуется, чтобы я выполнял все свои действия, такие как запуск приложения, из командной строки. Кроме того, что если я захочу запустить firefox с некоторыми собственными аргументами?
Я не знаю, доступен ли 'snoopy' для Ubuntu, но в Debian каждая команда, которую вы запускаете, регистрирует в /var/log/auth.log.