神奇,原来 Linux 终端下居然还有进程记帐功能...

640?wx_fmt=gif

点击上方“杰哥的IT之旅”,选择“置顶公众号”

干货、福利第一时间送达!

640?

神奇,原来 Linux 终端下居然还有进程记帐功能..._第1张图片

在系统管理中,有时需要记录用户对资源的消费情况,作为对用户账号收取费用的依据。这些日志也可以用于安全目的,提供有关系统活动的有价值的信息。

Linux 系统提供了一个名为 psacct 的软件包,可以实现记帐的功能。

psacct 包检测


首先,我们要确保当前系统是否已经安装了 psacct 包,可通过如下命令进行查看;

# rpm -qa | grep psacct
psacct-6.3.2-63.el6_3.3.x86_64

psacct 服务开启与关闭


为了开启该记帐功能,需执行 /etc/rc.d/init.d/psacct start 或者

service psacct start 命令;

# /etc/rc.d/init.d/psacct start
开启进程记帐: [确定]
# service psacct start
开启进程记帐: [确定]

若要停止该记帐功能,可执行 /etc/rc.d/init.d/psacct stop 或者

service psacct stop 命令;

# service psacct stop
关闭进程记帐: [确定]
# /etc/rc.d/init.d/psacct stop
关闭进程记帐: [确定]

相关的配置文件


当记帐功能开启后,有关的用户和进程的记帐信息将会记录在日志文件 /var/account/pacct 中。

# vi /var/account/pacct

psacct 软件包安装时在 /etc/logrotate.d 目录安装了转储配置文件,且文件名也是 psacct 。有了记帐日志后,psacct 软件包提供的命令就可以使用了。当用户执行过的命令会被 psacct 记录,日志将存放在 /var/account/pacct 文件中。

# cd /etc/logrotate.d
# ls
cups dracut httpd ppp psacct sssd syslog wpa_supplicant yum
# cat psacct 
# Logrotate file for psacct RPM
 
/var/account/pacct {
#prerotate loses accounting records, let's no
# prerotate
# /usr/sbin/accton
# endscript
 compress
 delaycompress
 notifempty
 daily
 rotate 31
 create 0600 root root
 postrotate
 /usr/sbin/accton /var/account/pacct
 endscript
}

lastcomm


利用 lastcomm 命令可以输出日志中的更多详细的信息,将显示所有被用户所运行过的进程和命令。

# lastcomm | more
pickup S postfix __ 0.00 secs Wed May 29 00:44
crond SF root __ 0.00 secs Wed May 29 02:20
sadc S root __ 0.00 secs Wed May 29 02:20
unix_chkpwd S root __ 0.00 secs Wed May 29 02:20
grep root pts/1 0.02 secs Wed May 29 02:16
rpm root pts/1 2.70 secs Wed May 29 02:16

  • 第一列:启动进程的命令名。

  • 第二列:标志。

  • 第三列:执行进程的用户名。

  • 第四列:命令在哪个终端执行的。

  • 第五列:执行进程所花费的时间。

  • 第六列:在什么日期和时间执行的进程。

神奇,原来 Linux 终端下居然还有进程记帐功能..._第2张图片

lastcomm 常用命令选项参数


  • --user :列出指定用户名的记录;

  • --command :列出与指定命令相同的记录;

  • --tty :列出指定终端上执行的进程;

  • -f  :从指定的文件中读取数据;

  • --strict-match:严格的匹配;

神奇,原来 Linux 终端下居然还有进程记帐功能..._第3张图片

sa 


sa 命令位于 /usr/bin 目录下,它可以将之前所执行过的命令占用了多少 CPU 信息进行统计出来,并提供系统资源的消费信息。同时对于这一查询可以更方便查出具体哪些占用 CPU 信息占比高等相关显示。

# cd /usr/bin
# ll | grep sa
-rwxr-xr-x. 1 root root 27008 11月 23 2013 abrt-action-save-package-data
-rwxr-xr-x. 1 root root 27247 9月 12 2012 alsa-info
lrwxrwxrwx. 1 root root 9 6月 4 2016 alsa-info.sh -> alsa-info
-rwxr-xr-x. 1 root root 1558624 2月 22 2013 alsaloop
-rwxr-xr-x. 1 root root 76888 2月 22 2013 alsamixer

执行命令 sa | more 命令进行输出所运行过的进程所占用的 CPU 时间信息。

# sa | more
544 2430102.76re 1.50cp 18238k
13 21.50re 1.38cp 23924k ***other*
4 0.43re 0.06cp 88788k yumBackend.py
2 19191.34re 0.03cp 17840k sshd
9 4699.73re 0.01cp 19047k packagekitd
4 15410.99re 0.00cp 27092k bash

  • 第一列的数值:544 该数值的意思是进程执行的次数;

  • 第二列的数值:2430102.76re 该数值的意思是“真实”的 CPU 时间;

  • 第三列的数值:1.50cp 该数值的意思是系统和用户 CPU 时间的总和;

  • 第四列的数值:18238k 该数值的意思是内核所占用的平均 CPU 时间,以 1K 个 CPU 单位时间为单位;

  • 第五列的结果:yumBackend.py 该输出的结果为启动进程的命令名称;

神奇,原来 Linux 终端下居然还有进程记帐功能..._第4张图片

sa 常用参数选项


神奇,原来 Linux 终端下居然还有进程记帐功能..._第5张图片

  • -u:列出执行进程的用户;

# sa -u | head -5
root 0.00 cpu 981k mem accton 
root 0.04 cpu 28384k mem logrotate 
root 0.00 cpu 26528k mem logrotate 
root 0.00 cpu 26480k mem awk 
root 0.00 cpu 25232k mem basename

  • -l:将系统时间和用户时间分别输出;

# sa -l | head -5
 628 15590.86re 0.00u 0.07s 21476k
 12 9985.38re 0.00u 0.05s 24410k ***other*
 60 0.13re 0.00u 0.01s 28050k find
 11 5597.53re 0.00u 0.00s 18976k packagekitd
 78 0.06re 0.00u 0.00s 29344k crond*

  • -m:汇总每个用户占用的 CPU 时间;

[root@localhost bin]# sa -m
 628 15590.86re 0.07cp 21476k
root 610 15585.44re 0.07cp 21730k
postfix 7 5.39re 0.00cp 20336k
dbus 11 0.03re 0.00cp 8148k

  • 命令 man sa 手册 SYNOPSIS 参数选项详情;

神奇,原来 Linux 终端下居然还有进程记帐功能..._第6张图片

ac 


ac 命令在 /usr/bin 目录下,日志文件在 /var/log/wtmp

主要统计用户在线时间。

# ll | grep ac | head -3
-rwxr-xr-x. 1 root root 13920 11月 23 2013 abrt-action-analyze-backtrace
-rwxr-xr-x. 1 root root 12360 11月 23 2013 abrt-action-analyze-c
-rwxr-xr-x. 1 root root 1313 11月 23 2013 abrt-action-analyze-ccpp-local

ac 常用参数选项


神奇,原来 Linux 终端下居然还有进程记帐功能..._第7张图片

  • 不加任何参数时,只显示所有用户总的在线时间;

# ac
total 246.52

  • -d:列出每天所有用户的总在线时间;

# ac -d
Jun 4 total 43.92
Jun 5 total 72.09
May 27 total 19.28
May 28 total 101.02
Today total 10.21

  • -p:列出每个用户的总在线时间;

# ac -p
root 246.53
total 246.53

  • 若查看更多参数选项,可执行命令“man ac”来查看关于命令 ac 的手册详情;

神奇,原来 Linux 终端下居然还有进程记帐功能..._第8张图片

  • 需要注意的是:以上表示的时间的数字均以小时为单位计算;

神奇,原来 Linux 终端下居然还有进程记帐功能..._第9张图片

往期精彩

1、Linux 环境下安装 Python3 的操作方法

2、Linux 图形化终端下截图与快捷键实用技巧!

3、Linux 之 Yum 仓库的配置及使用

4、只需 2 条命令,人人都能玩转的游戏!

5、跟我学 Saltstack 常用模块及 API

6、如何在 Saltstack 组件下收集被控主机的信息?

7、如何通过 Saltstack pillar组件定义与被控主机相关的任何数据?

8、利用 Saltstack 远程执行命令

640?wx_fmt=jpeg

你可能感兴趣的:(神奇,原来 Linux 终端下居然还有进程记帐功能...)