如何记录我正在运行的程序以及运行时间(在 Ubuntu 上)?

如何记录我正在运行的程序以及运行时间(在 Ubuntu 上)?

我希望有一个易于阅读的日志,记录某个特定应用程序的启动时间。日志需要包含时间戳并记录我执行的操作,例如当我启动浏览器或启动游戏时。

答案1

Bash 会记录你运行的所有命令的历史记录,你也可以让它记录时间戳 - 请参阅http://larsmichelsen.com/open-source/bash-timestamp-in-bash-history/了解更多信息。

但是 bash 历史记录不会永远保留,它仍然只记录您从命令行运行的内容。

答案2

你自己的建议一点也不差。这样的脚本可以是以下形式

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

这将使用 sudo 以您自己的身份启动 Firefox。

例如:

$ 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

答案3

一种可能性是编写一个小型 bash 脚本,其形式为

$ myLogging firefox

这将记录 Firefox 启动的时间,在此示例中,Firefox 启动时间,然后只需启动 Firefox。

但是,这要求我从命令行执行所有操作,例如启动应用程序。另外,如果我想使用 Firefox 自身的一些参数来启动它,该怎么办?

答案4

我不知道 'snoopy' 是否适用于 Ubuntu,但在 Debian 上,它会将您运行的每个命令记录到 /var/log/auth.log 。

相关内容