Linux - 计算会话持续时间并将其添加到提示中

时间:2013-03-12 15:04:31

标签: linux shell session command-line command-prompt

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

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

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

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

2 个答案:

答案 0 :(得分: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函数来完成相同的操作。阅读文档。

答案 1 :(得分:0)

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