什么是进程会计?
进程会计记录了什么时间启动了什么进程,进程的属主是什么,进程的结束时间等信息。
linux默认并没有开启进程会计,那么如何开启进程会计呢?
centos中提供了一个叫做psacct的软件包,其中包含accton 、lastcomm、ac、sa、dump-acct、dump-utmp几个命令,可以帮助我们开启、关闭、查看进程会计信息,简要介绍如下:
accton on|off|file
打开、关闭进程会计,也可以直接accton file来指定进程会计信息的记录位置,同时开启进程会计;注意:
- 进程会计信息的默认存储位置: /var/account/pacct
- 进程会计信息存储文件需要预先手动创建(touch一个就行)
实现原理:
linux提供了一个acct系统调用,用来通知内核信息进程会计:
accton on 等同于: acct(“/var/account/pacct”)
accton off等同于: acct(NULL)
(注意:有的版本可能不能accton off,而是不带任何参数就意味着off)
lastcomm: 查看进程会计信息
1 2 3 4 5 6 7 8 |
# lastcomm -f acct accton root pts/0 0.00 secs Tue Apr 4 13:13 sh zabbix __ 0.00 secs Tue Apr 4 13:13 wc zabbix __ 0.00 secs Tue Apr 4 13:13 grep zabbix __ 0.00 secs Tue Apr 4 13:13 netstat zabbix __ 0.01 secs Tue Apr 4 13:13 accton root pts/0 0.00 secs Tue Apr 4 13:13 ... |
sa:统计进程会计信息
1 2 3 4 5 6 7 8 9 10 |
# sa -a acct 227 0.02re 0.00cp 0avio 28444k 2 0.00re 0.00cp 0avio 29776k netstat 88 0.00re 0.00cp 0avio 31031k ls 84 0.01re 0.00cp 0avio 26976k sleep 10 0.00re 0.00cp 0avio 28816k sh 10 0.00re 0.00cp 0avio 28160k grep 8 0.00re 0.00cp 0avio 28368k awk 8 0.00re 0.00cp 0avio 26976k head 8 0.00re 0.00cp 0avio 26976k cat |
dump-utmp
1 2 3 4 5 |
dump-utmp /var/log/wtmp|head reboot |~ |2|~~ | 0|3.10.0-327.el7.x86_64 |Tue Mar 7 00:42:20 2017 |tty1 |5|tty1| 1806| |Mon Mar 6 16:42:36 2017 LOGIN |tty1 |6|tty1| 1806| |Mon Mar 6 16:42:36 2017 runlevel |~ |1|~~ | 51|3.10.0-327.el7.x86_64 |