Ваше собственное предложение совсем не плохо. Такой сценарий может иметь вид
#!/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