如何使用 psacct 和 acct 工具监控 Linux 用户活动:安装、配置与性能评估深度解析
在我的运维生涯中,追踪用户在 Linux 系统香港服务器https://www.a5idc.com/上的实际行为(不仅仅是登录/登出,而是具体命令执行、资源消耗情况)是保障安全审计和性能优化的重要一环。psacct 和它的现代替代 acct 是两个轻量级、稳定且开源的工具,能帮助我们实现这一目标。
本文结合真实硬件测试环境,从安装、配置、使用、数据解读到性能评估,全方位剖析如何利用它们采集、分析 Linux 用户活动。
一、测试环境与硬件配置
| 项目 | 配置 |
|---|---|
| 服务器型号 | Dell PowerEdge R650 |
| CPU | 2 × Intel Xeon Gold 6330 |
| 内存 | 128 GB DDR4 |
| 存储 | 2 × 1TB NVMe SSD (RAID‑1) |
| 操作系统 | Ubuntu Server 24.04 LTS |
| Kernel | 6.5.0‑generic |
| 用户数量(测试) | 50+ |
| 网络 | 10 Gbps Ethernet |
注:本文安装、命令示例基于 Ubuntu 24.04 和 CentOS / RHEL 8/9 均适用,仅包管理命令略有差异。
二、什么是 psacct 和 acct
-
psacct:传统的进程会计工具。通过内核的审计接口来记录已结束的作业信息。早期许多系统默认提供。
-
acct:后续更活跃维护的进程会计实现,本质上是
psacct的升级版本。在大多数现代 Linux 发行版上,acct都可以直接使用。
无论是 psacct 还是 acct,都会在后台监听进程结束事件,并将信息写入日志,用于后期分析。
三、安装与启动
3.1 Ubuntu / Debian
3.2 RHEL / CentOS / Fedora
四、配置与服务管理
安装完成后,启动并设置开机自启:
检查状态:
输出类似:
五、核心命令详解与实例
下面是我们实际测试中最常用的一组命令。
5.1 lastcomm — 显示用户执行过的命令
输出示例
| 字段 | 说明 |
|---|---|
| command | 用户执行的命令 |
| user | 执行用户 |
| terminal | 终端 |
| time | CPU 时间 |
| date/time | 执行时间 |
5.2 ac — 用户登录时长统计
输出示例
| 参数 | 作用 |
|---|---|
-p |
按用户汇总显示 |
5.3 sa — 汇总进程会计数据
部分输出
| 字段 | 含义 |
|---|---|
| calls | 命令被调用次数 |
| total | CPU 时间累计 |
| command | 命令名 |
六、输出数据解析与表格整理
6.1 命令执行频次分析表
| 用户 | 命令 | 执行次数 | CPU 时间总计 (s) |
|---|---|---|---|
| user01 | bash | 45 | 12.34 |
| user02 | vim | 18 | 3.50 |
| user03 | gcc | 12 | 8.22 |
由上表可看出,user01 的交互最频繁,而 user03 编译任务更耗费 CPU。
6.2 登录时长排行榜
| 排名 | 用户 | 登录时长 (小时) |
|---|---|---|
| 1 | user01 | 5.35 |
| 2 | user04 | 3.20 |
| 3 | user02 | 0.80 |
七、进阶:按时间区间分析
如果想统计某段时间(比如过去 7 天)的用户行为,可以通过 sa 结合日志时间戳:
输出示例:
同样可以结合 awk/grep 做更精细分析。
八、性能与开销评估
在生产服务器上启用进程会计,是否会对性能造成明显影响?我们做了两组对比测试:
| 度量项 | 未启用 acct | 启用后 |
|---|---|---|
| 平均 CPU 1‑min Load | 0.72 | 0.78 (+8.3%) |
| 平均磁盘写入 (KB/s) | 120 | 145 (+20.8%) |
| 内存占用 | +0 MB | +2 MB |
结论:对大多数业务系统而言,开销在可接受范围内。基于 NVMe SSD 和充裕内存的服务器,影响很小。
九、与其他审计工具对比
| 工具 | 记录粒度 | 系统开销 | 是否实时查询 |
|---|---|---|---|
acct |
命令结束事件 | 低 | 否 |
auditd |
内核审计事件 | 中‑高 | 是 |
syslog |
系统日志 | 低 | 否 |
场景建议:
-
轻量级用户行为分析:
acct/psacct -
合规与安全审计:考虑结合
auditd
十、故障排查 & 最佳实践
10.1 日志文件位置
| 系统 | 默认会计文件 |
|---|---|
| Ubuntu / Debian | /var/log/account/pacct |
| CentOS / RHEL | /var/account/pacct |
确认文件存在:
10.2 防止数据过大
定期压缩与清理:
结合 logrotate 进行自动轮换:
十一、实战心得
在一个跨境电商平台环境(每日数百活跃开发/测试用户),启用 acct 后,我们能够:
-
量化开发者在不同分支服务器上的操作习惯
-
判断潜在异常脚本执行(例如深夜意外编译)
-
结合 CI/CD 流水线数据,判断构建时间与机器状态
这些数据帮助我们优化调度策略、提升资源利用率。
十二、总结
通过本文,你应该掌握了:
✅ 如何安装并启用 psacct/acct
✅ 核心命令 (lastcomm, ac, sa) 的详细用法
✅ 如何解读与汇总用户行为数据
✅ 性能开销评估与最佳实践
✅ 进阶场景(时间段、日志轮换与安全对比)
这些技巧不仅适用于单机审计,也能配合日志采集系统(例如 ELK / Splunk)用于更大规模的用户行为分析。

浙公网安备 33010602011771号