有没有办法计算当前用户的会话持续时间或会话长度?
我知道使用last
命令我们可以获得用户的登录和空闲时间,但是有一个直接命令或任何数学可以用来计算用户登录时的时间。
此外,如何在提示中添加此会话持续时间信息。我知道使用export PS1
它可以实现但是参数会是什么?
任何帮助都表示赞赏。感谢。
答案 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启动以来的秒数。