1

有没有办法计算当前用户的会话持续时间或会话长度?

我知道使用last命令我们可以获取用户的登录和空闲时间,但是当用户登录时,是否有直接命令或任何可以计算的数学运算。

还如何在提示中添加此会话持续时间信息。我知道export PS1可以使用它,但是要输入的参数是什么?

任何帮助表示赞赏。谢谢。

4

2 回答 2

2

在 Bash 中执行此操作的最简单方法是将其添加到您的 .bashrc 中:

PS1="\$SECONDS $PS1"

假设你还没有对你的 PS1 做任何奇特的事情,比如动态设置它PROMPT_COMMAND或其他什么。您之前需要反斜杠$SECONDS以确保每次都对其进行评估。(您也可以使用单引号,但也可能没有必要$PS1每次都进行评估。)

这只是给你一个代表会话已经存在的秒数的裸数字。对于更高级的格式,您将不得不付出更多的努力。例如:

PROMPT_COMMAND='SESSIONTIME=$(printf "%02d:%02d:%02d" $(($SECONDS / 3600)) $(($SECONDS / 60 % 60)) $(($SECONDS % 60)))'
PS1="\$SESSIONTIME $PS1"

其他 shell 可能有SECONDS,但不会有PROMPT_COMMAND;例如,在 zsh 中,您可以通过定义一个precmd函数来完成同样的事情。阅读文档。

于 2013-03-12T16:00:30.867 回答
0

这取决于您使用的外壳。在bash中,SECONDS参数的值是自当前 shell 启动以来的秒数。

于 2013-03-12T15:36:50.777 回答