使用 psacct 或 acct 工具监控 Linux 用户活动
psacct 或 acct 都是用于监控 Linux 系统上用户活动的开源实用程序。这些实用程序在后台运行,并跟踪每个用户在系统上的活动以及正在消耗的资源。
我个人在我们公司使用过这些工具,我们有一个开发团队,我们的开发人员不断在服务器上工作。因此,这些是关注它们的最佳实用程序。
这些程序提供了一种很好的方法来监视用户正在做什么、正在执行什么命令、消耗了多少资源以及用户在系统上活动的时间。另一个有用的功能是,它提供了 Apache、MySQL、FTP、SSH 等服务消耗的总资源。
我认为对于每个想要跟踪服务器/系统上的用户活动的 Linux/Unix 系统管理员来说,这是最伟大且最需要的实用程序之一。
psacct 或 acct 包提供了多种用于监视进程活动的功能。
- ac 命令打印用户登录/注销(连接时间)的统计数据(以小时为单位)。
- lastcomm命令打印用户之前执行过的命令的信息。
- accton命令用于打开/关闭计费过程。
- sa 命令总结了先前执行的命令的信息。
- last 和 lastb 命令显示最后登录用户的列表。
在 Linux 中安装 psacct 或 acct 软件包
psacct 和 acct 都是类似的软件包,它们之间没有太大区别,但 psacct 软件包仅适用于基于 rpm 的发行版,例如例如 RHEL、CentOS 和 Fedora,而 acct 软件包可用于 Ubuntu 等发行版、Debian 和 Linux Mint。
要在基于 rpm 的发行版下安装 psacct 软件包,请发出以下 yum 命令。
yum install psacct
在 Ubuntu/Debian/Linux Mint 下使用 apt 命令安装 acct 软件包。
sudo apt install acct
在其他 Linux 发行版上,您可以如图所示安装它。
sudo apk add psacct [On Alpine Linux]
sudo pacman -S acct [On Arch Linux]
sudo zypper install acct [On OpenSUSE]
启动 psacct 或 acct 服务
默认情况下,psacct 服务处于禁用模式,您需要在基于 RHEL 的发行版下手动启动它。使用以下命令检查服务的状态。
sudo systemctl status psacct
您会看到状态显示为已禁用,因此让我们使用以下命令手动启动它,这将创建一个 /var/account/pacct 文件。
sudo systemctl start psacct
sudo systemctl enable psacct
sudo systemctl status psacct
在Ubuntu、Debian、和Mint下服务会自动启动,不需要再次启动。
显示用户连接时间统计
不指定任何参数的 ac 命令将根据当前 wtmp 文件中的用户登录/注销显示连接时间的总统计信息(以小时为单位)。
ac
total 11299.15
显示 Linux 用户每日统计信息
使用命令“ac -d”将打印出每天的总登录时间(以小时为单位)。
ac -d
Jun 25 total 0.19
Oct 13 total 14.45
Oct 27 total 672.00
Oct 28 total 15.82
Nov 3 total 4.29
Nov 5 total 10.13
Dec 7 total 14.04
Dec 10 total 23.60
Dec 27 total 808.93
Jan 3 total 12.31
Mar 3 total 1438.67
Jul 22 total 6767.81
Today total 1517.09
显示所有Linux用户的总登录时间
使用命令“ac -p”将打印每个 Linux 用户的总登录时间(以小时为单位)。
ac -p
rockylinux 425.61
tecmint 702.29
root 10171.54
total 11299.44
显示Linux用户登录时间
要获取用户“howtoing”的总登录统计时间(以小时为单位),请使用命令as。
ac tecmint
total 702.29
显示用户每日登录时间
以下命令将打印用户“howtoing”每天的总登录时间(以小时为单位)。
ac -d tecmint
Oct 11 total 8.01
Oct 12 total 24.00
Oct 15 total 70.50
Oct 16 total 23.57
Oct 17 total 24.00
Oct 18 total 18.70
Nov 20 total 0.18
打印用户执行的所有Linux命令
“sa”命令用于打印用户执行的命令的摘要。
sa
2 9.86re 0.00cp 2466k sshd*
8 1.05re 0.00cp 1064k man
2 10.08re 0.00cp 2562k sshd
12 0.00re 0.00cp 1298k psacct
2 0.00re 0.00cp 1575k troff
14 0.00re 0.00cp 503k ac
10 0.00re 0.00cp 1264k psacct*
10 0.00re 0.00cp 466k consoletype
9 0.00re 0.00cp 509k sa
8 0.02re 0.00cp 769k udisks-helper-a
6 0.00re 0.00cp 1057k touch
6 0.00re 0.00cp 592k gzip
6 0.00re 0.00cp 465k accton
4 1.05re 0.00cp 1264k sh*
4 0.00re 0.00cp 1264k nroff*
2 1.05re 0.00cp 1264k sh
2 1.05re 0.00cp 1120k less
2 0.00re 0.00cp 1346k groff
2 0.00re 0.00cp 1383k grotty
2 0.00re 0.00cp 1053k mktemp
2 0.00re 0.00cp 1030k iconv
2 0.00re 0.00cp 1023k rm
2 0.00re 0.00cp 1020k cat
2 0.00re 0.00cp 1018k locale
2 0.00re 0.00cp 802k gtbl
上述命令输出的解释:
- 9.86re 是按挂钟分钟计算的“实时”
- 0.01cp 是系统/用户时间的总和(以 cpu 分钟为单位)
- 2466k 是 cpu 时间平均核心使用率,即 1k 单位
- sshd 命令名称
打印 Linux 用户信息
要获取单个用户的信息,请使用选项-u。
sa -u
root 0.00 cpu 465k mem accton
root 0.00 cpu 1057k mem touch
root 0.00 cpu 1298k mem psacct
root 0.00 cpu 466k mem consoletype
root 0.00 cpu 1264k mem psacct *
root 0.00 cpu 1298k mem psacct
root 0.00 cpu 466k mem consoletype
root 0.00 cpu 1264k mem psacct *
root 0.00 cpu 1298k mem psacct
root 0.00 cpu 466k mem consoletype
root 0.00 cpu 1264k mem psacct *
root 0.00 cpu 465k mem accton
root 0.00 cpu 1057k mem touch
打印 Linux 进程数
此命令打印进程总数和 CPU 分钟数。如果您看到这些数字持续增加,那么是时候调查系统中发生的情况了。
sa -m
sshd 2 9.86re 0.00cp 2466k
root 127 14.29re 0.00cp 909k
按百分比打印和排序使用情况
命令“sa -c”显示最高的用户百分比。
sa -c
132 100.00% 24.16re 100.00% 0.01cp 100.00% 923k
2 1.52% 9.86re 40.83% 0.00cp 53.33% 2466k sshd*
8 6.06% 1.05re 4.34% 0.00cp 20.00% 1064k man
2 1.52% 10.08re 41.73% 0.00cp 13.33% 2562k sshd
12 9.09% 0.00re 0.01% 0.00cp 6.67% 1298k psacct
2 1.52% 0.00re 0.00% 0.00cp 6.67% 1575k troff
18 13.64% 0.00re 0.00% 0.00cp 0.00% 509k sa
14 10.61% 0.00re 0.00% 0.00cp 0.00% 503k ac
10 7.58% 0.00re 0.00% 0.00cp 0.00% 1264k psacct*
10 7.58% 0.00re 0.00% 0.00cp 0.00% 466k consoletype
8 6.06% 0.02re 0.07% 0.00cp 0.00% 769k udisks-helper-a
6 4.55% 0.00re 0.00% 0.00cp 0.00% 1057k touch
6 4.55% 0.00re 0.00% 0.00cp 0.00% 592k gzip
6 4.55% 0.00re 0.00% 0.00cp 0.00% 465k accton
4 3.03% 1.05re 4.34% 0.00cp 0.00% 1264k sh*
4 3.03% 0.00re 0.00% 0.00cp 0.00% 1264k nroff*
2 1.52% 1.05re 4.34% 0.00cp 0.00% 1264k sh
2 1.52% 1.05re 4.34% 0.00cp 0.00% 1120k less
2 1.52% 0.00re 0.00% 0.00cp 0.00% 1346k groff
2 1.52% 0.00re 0.00% 0.00cp 0.00% 1383k grotty
2 1.52% 0.00re 0.00% 0.00cp 0.00% 1053k mktemp
列出用户最近执行的命令
‘latcomm’命令用于搜索并显示以前执行的用户命令信息。您还可以搜索各个用户名的命令。例如,我们看到用户的命令(howtoing)。
lastcomm tecmint
su tecmint pts/0 0.00 secs Wed Feb 13 15:56
ls tecmint pts/0 0.00 secs Wed Feb 13 15:56
ls tecmint pts/0 0.00 secs Wed Feb 13 15:56
ls tecmint pts/0 0.00 secs Wed Feb 13 15:56
bash F tecmint pts/0 0.00 secs Wed Feb 13 15:56
id tecmint pts/0 0.00 secs Wed Feb 13 15:56
grep tecmint pts/0 0.00 secs Wed Feb 13 15:56
grep tecmint pts/0 0.00 secs Wed Feb 13 15:56
bash F tecmint pts/0 0.00 secs Wed Feb 13 15:56
dircolors tecmint pts/0 0.00 secs Wed Feb 13 15:56
bash F tecmint pts/0 0.00 secs Wed Feb 13 15:56
tput tecmint pts/0 0.00 secs Wed Feb 13 15:56
tty tecmint pts/0 0.00 secs Wed Feb 13 15:56
bash F tecmint pts/0 0.00 secs Wed Feb 13 15:56
id tecmint pts/0 0.00 secs Wed Feb 13 15:56
bash F tecmint pts/0 0.00 secs Wed Feb 13 15:56
id tecmint pts/0 0.00 secs Wed Feb 13 15:56
搜索命令日志
借助lastcomm命令,您将能够查看每个命令的单独使用情况。
lastcomm ls
ls tecmint pts/0 0.00 secs Wed Feb 13 15:56
ls tecmint pts/0 0.00 secs Wed Feb 13 15:56
ls tecmint pts/0 0.00 secs Wed Feb 13 15:56
有关更多信息和用法,请查看这些工具的手册页。