方法2
还有两个其他命令可以用于相同的目的,即 lastcomm 和 sa,它们位于 psacct 包下。
因此,请确保机器安装了 psacct。
$rpm -q psacct psacct-6.3.2-44.el5
如果软件包丢失,我们可以使用 yum 安装它
# yum install psacct
现在让我们看看安装在这个包下的文件
$rpm -ql psacct-6.3.2-44.el5 /etc/logrotate.d/psacct /etc/rc.d/init.d/psacct /sbin/accton /usr/bin/ac /usr/bin/lastcomm /usr/sbin/accton /usr/sbin/dump-acct /usr/sbin/dump-utmp /usr/sbin/sa /usr/share/info/accounting.info.gz /usr/share/man/man1/ac.1.gz /usr/share/man/man1/lastcomm.1.gz /usr/share/man/man8/accton.8.gz /usr/share/man/man8/sa.8.gz /var/account /var/account/pacct
我们可以安装许多其他可执行文件,但我们将在本文中重点关注的两个命令是 sa 和 lastcomm
lastcomm 打印出有关先前执行的命令的信息。
如果未指定参数,lastcomm 将打印有关 acct(记录文件)中所有命令的信息。
# lastcomm --user jack sshd SF jack __ 0.00 secs Thu Jun 12 03:08 bash jack pts/11 0.01 secs Thu Jun 12 03:08 clear jack pts/11 0.00 secs Thu Jun 12 03:30 bash-prompt-xte jack pts/11 0.00 secs Thu Jun 12 03:30 man jack pts/11 0.00 secs Thu Jun 12 03:14 sh jack pts/11 0.00 secs Thu Jun 12 03:14 less jack pts/11 0.00 secs Thu Jun 12 03:14 bzip2 jack pts/11 0.00 secs Thu Jun 12 03:14 gunzip jack pts/11 0.00 secs Thu Jun 12 03:14 bash-prompt-xte jack pts/11 0.00 secs Thu Jun 12 03:12 bash-prompt-xte jack pts/11 0.00 secs Thu Jun 12 03:12 lastcomm jack pts/11 0.00 secs Thu Jun 12 03:12 bash-prompt-xte jack pts/11 0.00 secs Thu Jun 12 03:09 bash-prompt-xte jack pts/11 0.00 secs Thu Jun 12 03:09 date jack pts/11 0.00 secs Thu Jun 12 03:09
对于每个条目,打印以下信息:
+ 进程的命令名称
+ 标志,由系统记帐例程记录:
超级用户执行的 S 命令
F - 命令在 fork 之后执行但没有后续的 exec
C 命令在 PDP-11 兼容模式下运行(仅限 VAX)
D 命令在生成核心文件时终止
X -command 以信号 SIGTERM 终止
+ 运行进程的用户名
+ 进程退出的时间
让我们使用由用户 jack 和 count 运行的独特命令来整理我们的输出
# lastcomm --user root | awk -F " " '{ print }' | sort | uniq --count 3 ac 1 accton 3537 awk 650 basename 17 bash 4 bzip2 11030 cat 5 chmod 1 clear 325 consoletype 1 cp 1591 crond 663 cut 1 date 4 egrep 2754 ethtool 42 find 5 finger
列出运行 rm 命令的时间和用户详细信息
# lastcomm rm rm jack pts/11 0.00 secs Thu Jun 12 03:35 rm jack pts/11 0.00 secs Thu Jun 12 03:35 rm root pts/5 0.00 secs Thu Jun 12 02:59 rm root pts/5 0.00 secs Thu Jun 12 02:59 rm root __ 0.00 secs Wed Jun 11 23:53 rm root __ 0.00 secs Wed Jun 11 23:53 rm root pts/5 0.00 secs Wed Jun 11 05:59 rm root pts/5 0.00 secs Wed Jun 11 05:59 rm root pts/5 0.00 secs Wed Jun 11 05:59 rm root pts/5 0.00 secs Wed Jun 11 05:59 rm root pts/5 0.00 secs Wed Jun 11 05:58 rm root pts/5 0.00 secs Wed Jun 11 05:58
方法3
sa 汇总了acct 文件中记录的有关先前执行的命令的信息。
此外,它将这些数据压缩到一个名为 savacct 的摘要文件中,该文件包含调用命令的次数和使用的系统资源。
这些信息也可以基于每个用户进行汇总; sa 会将此信息保存到名为 usracct 的文件中。
# sa -u | grep root |awk -F " " '{ print }' |sort | uniq --count 1 accton 423 awk 78 basename 9 bash-prompt-xte 1306 cat 5 chmod 38 consoletype 188 crond 78 cut 532 dhclient-script 325 ethtool 41 find 336 free 2 gconftool-2 593 grep
如果您想知道任何用户在任何Linux服务器上执行的命令是什么,该怎么办?
方法1
检查用户home目录中的 .bash_history 文件。
注意:除非用户注销,否则您将无法看到当前登录会话中执行的命令。
# less /home/jack/.bash_history man yum yum deplist httpd sud iptables -L sudo iptables -L sudo iptables --list less /etc/sysconfig/iptables sudo less /etc/sysconfig/iptables sudo iptables --list WEBSHPHERE sudo iptables --list INPUT cd test
日期:2020-06-02 22:17:01 来源:oir作者:oir