我想构建一个里程表来跟踪自上次重置计数器以来我在服务器上的时间。
最近我在学校的一台unix服务器上记录了相当多的时间,并开始想知道我在过去几天里有多少时间用完了。我开始尝试考虑如何编写Bash脚本或C程序,以便在我的.bash_profile加载时运行(即,当我进入服务器时),背景本身,并将时间保存到文件中结束了会议。
我知道如何在我登录时运行程序(通过.bash_profile)以及如何设置C程序(通过分叉?),但我不确定如何检测ssh会话已被终止(也许通过观看sshd进程?) 我希望这是正确的堆栈交换,询问你将如何做这样的事情并欣赏任何意见。
答案 0 :(得分:1)
您是否考虑过编写一个可以由cron每分钟运行一次的脚本,运行“who”,查看其输出中包含uid的行,如果找到任何计数器则碰撞计数器? (使用“crontab -e”编辑crontab。)
即使只是crontab中的一行,如下所示:
* * * * * (date; who | grep $LOGNAME)>>$HOME/.whodata
...会创建一个日志,您可以在以后随意处理。
答案 1 :(得分:1)
根据您的shell,您可能只能在登录时在后台生成一个进程,然后在父进程(shell)退出时处理kill信号。它不会消耗资源,您不需要root权限,它应该提供相当准确的报告您的登录时间。
您可能需要使用POSIX信号量来处理同时登录多个shell的情况。