GNU计账工具-acct


Gnu的pacct(或acct)工具主要用于监控系统用户活动,包括登录时间、执行的命令等,从而帮助管理员监控和审计系统使用情况。然而它本身并不直接提供系统性能优化的功能,而是提供相关的优化参考依据。准确的说 acct 是一个工具包,里面包含有针对用户连接时间、进程执行情况等进行统计的工具。它可以记录用户登录信息,用户所执行的程序,程序执行情况信息等。监控系统上用户活动的开源应用程序,这些应用程序在后台运行并跟踪系统上每个用户的活动以及消耗的资源。
其全称为:The GNU Accounting Utilities:provide login and process accounting utilities for GNU/Linux and other systems.
主要功能
记录用户活动:pacct可以记录每个用户的每一条命令,包括登录信息、执行的程序等。
监控用户资源使用:通过分析用户的活动,管理员可以监控资源使用情况,如CPU、内存和磁盘I/O。
如何使用
安装psacct软件包:对于基于RPM的发行版(如RHEL、CentOS、Fedora),可以使用yum install psacct命令安装;对于基于DEB的发行版(如Debian、Ubuntu),可以使用apt-get install acct指令来安装。
启用进程统计:通过运行accton /var/log/pacct命令来启用进程统计功能。亦可以通过其在操作系统下的服务来实现启动功能:
systemctl enable | start | status | stop psacct.service
虽然pacct工具主要用于监控和审计,但通过分析用户活动,管理员可以识别出哪些用户或进程正在大量使用系统资源,从而间接帮助优化系统性能。例如发现某个用户或进程占用了大量CPU或内存,可以进一步调查并采取相应措施。其用于控制进程记账功能,进程记账是指系统记录每个进程在运行过程中所使用的资源,如 CPU 时间、内存使用等,以便进行后续的分析和审计。通常用户在命令行的历史记录会保存在他们的 $HOME 目录下的 .bash_history 文件中;有些用户可能会尝试编辑、修改或删除这些历史记录。然而即其完全清除了命令行历史,记账工具依然能够获取用户活动信息。这是因为所有进程记账文件都由 root 用户拥有,而普通用户则无法进行编辑。
基本概念
进程记账的主要目的是为了收集系统和应用程序的性能数据,这些数据可以用于多种目的,例如:
性能监控:分析系统资源的使用情况,找出可能的性能瓶颈。
安全审计:追踪用户的活动,检查是否有未授权的访问或其他安全违规行为。
费用核算:在多用户或多租户环境中,根据资源使用情况来分摊费用。
相关优势
详细跟踪:可以记录每个进程的详细资源使用情况。
历史数据分析:可以分析历史数据来预测未来的资源需求。
安全性增强:通过审计跟踪,可以提高系统的安全性。
类型
accton 命令本身不直接提供不同类型的记账,但它可以控制是否启用整个系统的进程记账功能。记账信息通常存储在 /var/account/pacct 文件中,可以使用 lastcomm、sa 和 dump-utmp 等工具来分析这些数据。
应用场景
系统管理员:监控系统资源使用,优化系统性能。
安全分析师:进行安全审计,追踪潜在的安全威胁。
IT 成本管理者:在云环境或多租户环境中,根据实际使用情况来核算成本。
(ps)acct(进程记账)软件包包含以下用来监测用户和进程活动的工具:
ac - 提供用户登录时间的统计信息。
lastcomm - 展示先前执行过的命令的信息。
accton - 开启或关闭进程记账。
dump-acct - 把 accton 的输出文件转化为易读的格式。
dump-utmp - 以易读的方式打印 utmp 文件。
sa - 汇总摘要信息,关于先前执行的命令。
在使用pacct工具时,应确保遵守相关的隐私和数据保护法规,避免不必要的隐私泄露。它主要用于监控和审计目的,不建议将其作为主要的性能优化工具。对于系统性能优化,应采用更专业的性能分析工具和针对性的方法。
通过上述分析可以看出pacct工具在系统监控和审计方面具有一定的作用,但在直接优化系统性能方面可能效果有限。因此对于系统性能优化,建议采取综合措施,包括使用专业的性能分析工具、调整系统配置、优化应用程序等。
在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。其命令的形式accton file,且file必须先存在。先使用touch命令来创建pacct文件:touch /var/log/pacct,然后运行accton:accton /var/log/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令;若要关闭统计,可以执行不带任何参数的accton命令即可。
各相关指令使用参考
1、ac 命令
ac 工具可以为你提供以小时为单位的连接时间报告,这样就能知道用户或一组用户连接到系统的时长。
不指定任何参数ac命令会在统计数据基础上显示在线的小时连接时间数,用户登录/从当前wtmp文件注销。
1.1、展示所有用户的总连接时间
$ ac
上述命令会显示所有用户的总连接时间(单位为小时,下同)。
1.2、按日期排序显示所有用户的总连接时间
可以通过使用 -d 参数,按日期排序显示所有用户的连接时间,操作如下:
$ ac -d
1.3、获取各个用户的总连接时间
使用 -p 参数可以查看每位用户各自在系统中总的连接时长。
$ ac -p
1.4、显示指定用户的总连接时间
还可以显示特定用户的总登录时间。
$ ac userfreeoa
1.5、显示特定用户各日期的总连接时间
要按日期查看某个用户的登录时间,可以运行:
$ ac -d userfreeoa
2、lastcomm 命令使用示例
该指令工具用于列出过去执行过的命令,它会按执行的最近程度将命令列在前面。
2.1、展示过去执行的命令
$ lastcomm
2.2、打印特定用户先前执行的命令
上述命令显示的是所有用户的命令。要显示特定用户以前执行的命令,可以使用下面的命令:
$ lastcomm userfreeoa
2.3、打印特定命令的执行次数
还可以查看特定命令被执行的次数。
$ lastcomm apt
3、sa 命令示例
sa 程序将总结关于先前执行的命令的信息。
3.1、打印输出所有账户的命令总结
$ sa
2 9.86re 0.00cp 2366k sshd*
各项输出说明:
9.86re 是一个“real time”根据挂钟分钟
0.01cp 是以 cpu 分钟为单位的系统/用户时间的总和
2366k 是 CPU 时间平均核心使用率,即 1k 单位
sshd 命令名
3.2、查看进程数量和 CPU 分钟数
要打印基于每个用户的进程数量和 CPU 分钟数,运行带 -m 标志的 sa 命令:
$ sa -m
此命令打印进程总数和 CPU 分钟数。如果看到这些数字继续增加,那么是时候查看系统中正在发生的事情了。
3.3、打印用户 ID 和命令名称
对于账户文件中的每个命令,使用 -u 标志打印用户 ID 和命令名称。
$ sa -u
3.4、按百分比打印排序
命令 sa -c 显示最高比例的用户。
4、dump-acct 和 dump-utmp 命令
dump-acct 实用工具将 accton 格式的输出文件显示为人类可读的格式。
$ dump-acct /var/account/pacct
dump-utmp 将 utmp 文件显示为人类可读的格式。
$ dump-utmp /var/run/utmp
5、accton 命令
accton 命令将允许开启或关闭记账(accounting)过程。
要开启进程记账,请运行:$ accton on
Turning on process accounting, file set to the default '/var/account/pacct'.
要关闭它可运行:$ accton off
Turning off process accounting.
语法格式:accton [OPTION] on|off|ACCOUNTING_FILE
选项说明:
-p filename #指定密码文件filename
--version #显示ac版本并退出
--help #打印命令概要
accton 命令参数:
on Activate process accounting and use default file
off Deactivate process accounting
ACCOUNTING_FILE Activate (if not active) and save information in this file
The system's default process accounting file is '/var/account/pacct'.
6、last 命令
last 和 lastb 命令显示上次登录用户的列表。
相关问题集
问题:如何启用进程记账?
解决方法:
要启用进程记账,可以使用以下命令:accton on
问题:如何查看进程记账信息?
解决方法:
可以使用 lastcomm 命令来查看最近执行的命令,或者使用 sa 命令来进行更详细的统计分析。
问题:进程记账数据存储在哪里?
解决方法:
进程记账数据通常存储在 /var/account/pacct 文件中。确保该文件有足够的磁盘空间,并定期备份。当pacct文件太大时还要考虑如何清理它了。
问题:如何禁用进程记账?
解决方法:
如果不需要进程记账功能,可以使用以下命令来禁用它:accton off
启用进程记账并查看最近的命令执行记录:accton on
# 执行一些命令...
# 查看最近的命令执行记录:lastcomm
#显示曾经登录过的用户
# last
#显示已执行过的命令
# lastcomm
项目主页:https://www.gnu.org/software/acct/
其全称为:The GNU Accounting Utilities:provide login and process accounting utilities for GNU/Linux and other systems.
主要功能
记录用户活动:pacct可以记录每个用户的每一条命令,包括登录信息、执行的程序等。
监控用户资源使用:通过分析用户的活动,管理员可以监控资源使用情况,如CPU、内存和磁盘I/O。
如何使用
安装psacct软件包:对于基于RPM的发行版(如RHEL、CentOS、Fedora),可以使用yum install psacct命令安装;对于基于DEB的发行版(如Debian、Ubuntu),可以使用apt-get install acct指令来安装。
启用进程统计:通过运行accton /var/log/pacct命令来启用进程统计功能。亦可以通过其在操作系统下的服务来实现启动功能:
systemctl enable | start | status | stop psacct.service
虽然pacct工具主要用于监控和审计,但通过分析用户活动,管理员可以识别出哪些用户或进程正在大量使用系统资源,从而间接帮助优化系统性能。例如发现某个用户或进程占用了大量CPU或内存,可以进一步调查并采取相应措施。其用于控制进程记账功能,进程记账是指系统记录每个进程在运行过程中所使用的资源,如 CPU 时间、内存使用等,以便进行后续的分析和审计。通常用户在命令行的历史记录会保存在他们的 $HOME 目录下的 .bash_history 文件中;有些用户可能会尝试编辑、修改或删除这些历史记录。然而即其完全清除了命令行历史,记账工具依然能够获取用户活动信息。这是因为所有进程记账文件都由 root 用户拥有,而普通用户则无法进行编辑。
基本概念
进程记账的主要目的是为了收集系统和应用程序的性能数据,这些数据可以用于多种目的,例如:
性能监控:分析系统资源的使用情况,找出可能的性能瓶颈。
安全审计:追踪用户的活动,检查是否有未授权的访问或其他安全违规行为。
费用核算:在多用户或多租户环境中,根据资源使用情况来分摊费用。
相关优势
详细跟踪:可以记录每个进程的详细资源使用情况。
历史数据分析:可以分析历史数据来预测未来的资源需求。
安全性增强:通过审计跟踪,可以提高系统的安全性。
类型
accton 命令本身不直接提供不同类型的记账,但它可以控制是否启用整个系统的进程记账功能。记账信息通常存储在 /var/account/pacct 文件中,可以使用 lastcomm、sa 和 dump-utmp 等工具来分析这些数据。
应用场景
系统管理员:监控系统资源使用,优化系统性能。
安全分析师:进行安全审计,追踪潜在的安全威胁。
IT 成本管理者:在云环境或多租户环境中,根据实际使用情况来核算成本。
(ps)acct(进程记账)软件包包含以下用来监测用户和进程活动的工具:
ac - 提供用户登录时间的统计信息。
lastcomm - 展示先前执行过的命令的信息。
accton - 开启或关闭进程记账。
dump-acct - 把 accton 的输出文件转化为易读的格式。
dump-utmp - 以易读的方式打印 utmp 文件。
sa - 汇总摘要信息,关于先前执行的命令。
在使用pacct工具时,应确保遵守相关的隐私和数据保护法规,避免不必要的隐私泄露。它主要用于监控和审计目的,不建议将其作为主要的性能优化工具。对于系统性能优化,应采用更专业的性能分析工具和针对性的方法。
通过上述分析可以看出pacct工具在系统监控和审计方面具有一定的作用,但在直接优化系统性能方面可能效果有限。因此对于系统性能优化,建议采取综合措施,包括使用专业的性能分析工具、调整系统配置、优化应用程序等。
在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。其命令的形式accton file,且file必须先存在。先使用touch命令来创建pacct文件:touch /var/log/pacct,然后运行accton:accton /var/log/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令;若要关闭统计,可以执行不带任何参数的accton命令即可。
各相关指令使用参考
1、ac 命令
ac 工具可以为你提供以小时为单位的连接时间报告,这样就能知道用户或一组用户连接到系统的时长。
不指定任何参数ac命令会在统计数据基础上显示在线的小时连接时间数,用户登录/从当前wtmp文件注销。
1.1、展示所有用户的总连接时间
$ ac
上述命令会显示所有用户的总连接时间(单位为小时,下同)。
1.2、按日期排序显示所有用户的总连接时间
可以通过使用 -d 参数,按日期排序显示所有用户的连接时间,操作如下:
$ ac -d
1.3、获取各个用户的总连接时间
使用 -p 参数可以查看每位用户各自在系统中总的连接时长。
$ ac -p
1.4、显示指定用户的总连接时间
还可以显示特定用户的总登录时间。
$ ac userfreeoa
1.5、显示特定用户各日期的总连接时间
要按日期查看某个用户的登录时间,可以运行:
$ ac -d userfreeoa
2、lastcomm 命令使用示例
该指令工具用于列出过去执行过的命令,它会按执行的最近程度将命令列在前面。
2.1、展示过去执行的命令
$ lastcomm
2.2、打印特定用户先前执行的命令
上述命令显示的是所有用户的命令。要显示特定用户以前执行的命令,可以使用下面的命令:
$ lastcomm userfreeoa
2.3、打印特定命令的执行次数
还可以查看特定命令被执行的次数。
$ lastcomm apt
3、sa 命令示例
sa 程序将总结关于先前执行的命令的信息。
3.1、打印输出所有账户的命令总结
$ sa
2 9.86re 0.00cp 2366k sshd*
各项输出说明:
9.86re 是一个“real time”根据挂钟分钟
0.01cp 是以 cpu 分钟为单位的系统/用户时间的总和
2366k 是 CPU 时间平均核心使用率,即 1k 单位
sshd 命令名
3.2、查看进程数量和 CPU 分钟数
要打印基于每个用户的进程数量和 CPU 分钟数,运行带 -m 标志的 sa 命令:
$ sa -m
此命令打印进程总数和 CPU 分钟数。如果看到这些数字继续增加,那么是时候查看系统中正在发生的事情了。
3.3、打印用户 ID 和命令名称
对于账户文件中的每个命令,使用 -u 标志打印用户 ID 和命令名称。
$ sa -u
3.4、按百分比打印排序
命令 sa -c 显示最高比例的用户。
4、dump-acct 和 dump-utmp 命令
dump-acct 实用工具将 accton 格式的输出文件显示为人类可读的格式。
$ dump-acct /var/account/pacct
dump-utmp 将 utmp 文件显示为人类可读的格式。
$ dump-utmp /var/run/utmp
5、accton 命令
accton 命令将允许开启或关闭记账(accounting)过程。
要开启进程记账,请运行:$ accton on
Turning on process accounting, file set to the default '/var/account/pacct'.
要关闭它可运行:$ accton off
Turning off process accounting.
语法格式:accton [OPTION] on|off|ACCOUNTING_FILE
选项说明:
-p filename #指定密码文件filename
--version #显示ac版本并退出
--help #打印命令概要
accton 命令参数:
on Activate process accounting and use default file
off Deactivate process accounting
ACCOUNTING_FILE Activate (if not active) and save information in this file
The system's default process accounting file is '/var/account/pacct'.
6、last 命令
last 和 lastb 命令显示上次登录用户的列表。
相关问题集
问题:如何启用进程记账?
解决方法:
要启用进程记账,可以使用以下命令:accton on
问题:如何查看进程记账信息?
解决方法:
可以使用 lastcomm 命令来查看最近执行的命令,或者使用 sa 命令来进行更详细的统计分析。
问题:进程记账数据存储在哪里?
解决方法:
进程记账数据通常存储在 /var/account/pacct 文件中。确保该文件有足够的磁盘空间,并定期备份。当pacct文件太大时还要考虑如何清理它了。
问题:如何禁用进程记账?
解决方法:
如果不需要进程记账功能,可以使用以下命令来禁用它:accton off
启用进程记账并查看最近的命令执行记录:accton on
# 执行一些命令...
# 查看最近的命令执行记录:lastcomm
#显示曾经登录过的用户
# last
#显示已执行过的命令
# lastcomm
项目主页:https://www.gnu.org/software/acct/