Linux - 计算 session 持续时间并将其添加到您的提示中

标签 linux shell session command-line command-prompt

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

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

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

感谢任何帮助。谢谢。

最佳答案

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

PS1="\$SECONDS $PS1"

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

这只是给你一个简单的数字,代表 session 已经存在的秒数。对于更高级的格式,您将需要付出更多的努力。例如:

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

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

关于Linux - 计算 session 持续时间并将其添加到您的提示中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15364808/

相关文章:

c++ - LEDA 库(C++ 库)设置 linux

bash - 如何将命令的输出通过管道传输到程序并保持其标准输入打开

java - 并发请求失败 - "Session is closed!"

php - PHP session 安全吗?

php - 编辑实时运行的 PHP 脚本

c++ - ffmpeg 错误 - 未定义整体

linux - chown 用户目录,没有用户存在

bash - Bash 中的 Null 和空字符串比较

linux - 如何获取在 bash 脚本中执行的命令的进程 ID?

ruby-on-rails - 使用命名空间时设计和 current_user 问题