Shell命令编写——查看当前登陆用户的登录时间ac,last

  ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连接的时间(小时),

如果不使用标志,则报告总的时间.

1.键入ac命令,然后按回车键,将显示如下内容: total 496.35

2.键入ac -d命令,然后按回车键,将显示每天的总的连接时间:

Aug 12 total 261.87
Aug 13 total 351.39
Aug 14 total 396.09
Today total 179.02

键入ac -p命令,然后按回车键,将显示每个用户的总的连接时间:

tom 0.32

root 496.05
total 496.37

编写ac

1.#man ac

2.#man 5 wtmp

发现也存储在utmp.h中,并查找到


#define WTMP_FILE       _PATH_WTMP

因此打开WTMP_FILE文件/var/log/wtmp中来读取utmp结构的信息

根据我们前面编写who的方法,我决定套用前面的结构,重点是对show_info函数的重写

对于-d和-p以后再进行实现,只实现#ac 显示当前用户的登录时间总计

Its format is exactly  like  utmp except that a null user name indicates a logout on the associated terminal.

 

倒数两列的计算比较特殊


reboot   system boot  2.6.18-92.el5    Wed Mar 23 14:26             (00:06)

root     :0                                        Wed Mar 23 14:19 - 14:24  (00:04)

root     :0                                        Wed Mar 23 14:19 - 14:19  (00:00)

reboot   system boot  2.6.18-92.el5    Wed Mar 23 14:19             (00:05)

reboot   system boot  2.6.18-92.el5    Wed Mar 23 22:14             (-7:-56)

首先reboot   system boot  2.6.18-92.el5    Wed Mar 23 14:19             (00:05)  (00:05)=reboot时间 14:19-文件向下读取的第一个shutdown的时间


root     :0                                        Wed Mar 23 14:19 - 14:19  (00:00)

 (00:00) = 当前表项的时间 - 文件向下读取过程中该utmp结构下一个终端类型相同表项的时间
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值