c - 为在服务器上花费的时间构建 "odometer"

标签 c bash unix timer

我想构建一个里程表来跟踪自从我上次重置计数器以来我在服务器上停留了多长时间。

最近我花了很多时间在我学校的一台 unix 服务器上工作,并开始想知道过去几天我到底花了多少时间。我开始考虑如何编写一个 Bash 脚本或 C 程序,以便在我的 .bash_profile 加载时(即,当我 ssh 进入服务器时)、后台本身以及在我加载时将时间保存到文件中关闭 session 。

我知道如何在登录时运行程序(通过 .bash_profile)以及如何使 C 程序处于后台(通过 fork ?),但我不确定如何检测 ssh session 已终止(也许通过观察 sshd 进程?) 我希望这是正确的堆栈交换来询问你将如何处理这样的事情并感谢任何输入。

最佳答案

根据您的 shell,您可以在登录时在后台生成一个进程,然后在父进程(shell)退出时处理 kill 信号。它不会消耗资源,您不需要 root 特权,而且它应该提供相当准确的登录时间报告。

您可能需要使用 POSIX 信号量来处理同时登录多个 shell 的情况。

关于c - 为在服务器上花费的时间构建 "odometer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8023758/

相关文章:

c++ - boost::shared_ptr 到 void * 反之亦然

bash - 续行+行注释,在同一行?

linux - 如何向文件添加行号?

bash - 如何使用 ls 在 Unix 中查找一组特定日期的文件

Bash : If command timeout, 执行其他操作

c - 免费提供错误

c - C语言列出所有不重复的数字排列

c++ - 为什么在 C 中减去 '0' 会得到 char 代表的数字?

c - 你写过很长的函数吗?如果是这样,为什么?

linux - 如何停止重启后启动的ROS脚本