目录
Linux 中的 ac
命令是一个用于统计用户登录和注销时间的工具。它通过读取 /var/log/wtmp
文件(记录用户登录和注销信息)来生成报告,帮助系统管理员分析用户的活动情况。以下是其详细解析:
1. 功能概述
1.1 核心功能
- 用户登录时长统计:基于
/var/log/wtmp
文件记录,显示用户累计登录时间(默认单位为小时)。 - 时间粒度分析:支持按天、用户维度统计登录时长。
- 系统监控辅助:帮助管理员分析用户活动模式及资源使用情况。
1.2 依赖文件
/var/log/wtmp
:记录用户登录/注销事件,需确保文件存在且权限可读。acct
/psacct
软件包:提供ac
命令及相关工具(如lastcomm
、sa
)。
1.3 适用场景
- 监控用户活跃度。
- 安全审计(检查异常登录行为)。
- 统计用户资源使用情况(如在线时间)。
2. 语法格式
ac [选项] [用户名...]
3. 常用选项
选项 | 功能 | 示例 |
---|---|---|
-d |
按天统计登录时长,显示每天的总计时间。 | ac -d |
-p |
显示每个用户的登录总时长,并在末尾显示所有用户的总计时间。 | ac -p |
-y |
在输出日期时包含年份。 | ac -d -y |
-f |
指定自定义的 wtmp 文件路径(默认为 /var/log/wtmp )。 |
ac -f /path/to/custom_wtmp |
-n |
以数字形式显示时间戳(不解析为具体时间)。 | ac -n |
-s |
指定起始日期(格式:YYYY-MM-DD )。 |
ac -s 2025-08-26 |
-e |
指定结束日期(格式:YYYY-MM-DD )。 |
ac -e 2025-08-30 |
-h |
显示帮助信息。 | ac -h |
4. 输出示例
4.1 默认输出(总登录时长)
[root@centos79-20251123 ~]# ac
total 6035.10
- 说明:所有用户累计登录时间为 6034.48 小时。
4.2 按天统计
[root@centos79-20251123 ~]# ac -d
Nov 24 total 1.57
Nov 25 total 0.71
Nov 30 total 0.19
Dec 1 total 4.64
Dec 4 total 1.21
Dec 12 total 13.38
Dec 20 total 4.58
Dec 21 total 2.35
Dec 26 total 2.88
Jan 2 total 1.57
Jan 3 total 22.71
Mar 4 total 7.69
Mar 5 total 14.50
Mar 13 total 4.19
Mar 14 total 9.19
Mar 15 total 10.20
Mar 18 total 9.19
Mar 28 total 12.38
Mar 29 total 3.94
Apr 1 total 4.20
Apr 3 total 2.84
Apr 9 total 6.19
Apr 10 total 0.32
Apr 12 total 18.38
Apr 15 total 0.13
Apr 16 total 5.19
Apr 24 total 4.19
Apr 25 total 4.19
Apr 26 total 2.19
Apr 28 total 3.56
Apr 30 total 9.31
May 8 total 0.45
May 9 total 7.38
May 11 total 4.65
May 19 total 5.68
4.3 显示每个用户的登录时长
[root@centos79-20251123 ~]# ac -p
yq 3.26
zhh 2.44
lyh 2.67
root 6026.32
total 6034.69
- 说明:显示每个用户的累计登录时间,并在末尾汇总总时长。
5. 注意事项
5.1 权限要求
ac
命令需要 root 权限 才能读取/var/log/wtmp
文件。- 非 root 用户执行时会报错:
No /var/log/wtmp
5.2 文件依赖
- 如果
/var/log/wtmp
文件被删除或清空,ac
命令将无法输出结果。 - 可通过
last
命令查看wtmp
文件是否正常。
5.3 安装问题
ac
命令可能未预装在部分 Linux 发行版中。需手动安装:
- Debian/Ubuntu:
sudo apt install sysstat
- Red Hat/CentOS:
sudo yum install sysstat
5.4 时间单位
- 输出的登录时长单位为 小时,小数部分表示分钟(如
0.30
表示 18 分钟)。
5.5 文件路径差异
- 某些系统可能将
wtmp
文件存储在/var/adm/wtmp
或其他路径,需通过-f
选项指定。