方便的date/时间戳控制台交互,例如使用shell别名?

所以我经常发现,当我发现这个过程已经过去了很长一段时间的时候,我真的很想知道什么时候我开始一个进程(或脚本)。这意味着我不能在命令行前后预先保存date(不中断)我现在知道的东西需要很长时间)..然后,当我离开terminal时,过程可能会结束。

这让我想 – 是否有可能扭曲shell别名,以便默认情况下每个命令行条目之前和之后调用一个“date”? 有时能够在terminal中回滚并感受一下东西花了多长时间,这将是超级有用的。

其他人有解决这个问题的巧妙方法 – 我相信这是一个普遍的情况。

就这个方法的解决scheme而言,我猜这跟Q有点关系。 用初始命令运行一个交互式的bash子shell而不立即返回到(“super”)shell

哪里清楚你可以prepend命令..但这只是解决scheme的一部分。 也许预先挂起,然后获取shell提示符显示当前时间将是一个相当干净的解决scheme?

思考?

你可以简单地修改你的shell提示符PS1variables来显示当前的时间戳。 可以使用下列之一:

 \t the current time in 24-hour HH:MM:SS format \T the current time in 12-hour HH:MM:SS format \@ the current time in 12-hour am/pm format \A the current time in 24-hour HH:MM format 

你可以在man bashfind其他选项。 编辑您的.bashrc文件以根据需要修改PS1

然后您可以确定何时执行任何命令。 当然,如果你在进入前闲置很长时间,你将无法获得准确的时间。

编辑:另一种可能性是使用ts工具来显示你的脚本是如何进展的。 执行您的脚本为:

 $ /path/to/script | ts 

每个回声语句都会显示一个时间戳。

注意:这不是OP所要求的直接答案,但是解决它的问题也许是有用的。

对于已经启动的进程,你可以检索开始date/时间发出一个简单的ps ax -F 。 它将显示类似于以下的输出:

 apache 1733 1678 0 83467 7752 0 10:07?  S 0:00 / usr / sbin / httpd
 apache 1734 1678 0 83467 7752 0 10:07?  S 0:00 / usr / sbin / httpd
 apache 1735 1678 0 83467 7752 0 10:07?  S 0:00 / usr / sbin / httpd
 apache 1736 1678 0 83467 7768 0 10:07?  S 0:00 / usr / sbin / httpd
 apache 1737 1678 0 83467 7752 0 10:07?  S 0:00 / usr / sbin / httpd
 apache 1738 1678 0 83467 7752 0 10:07?  S 0:00 / usr / sbin / httpd

正如你所看到的,第八列显示开始date/时间。