如何借助psacct或acct工具監視用戶活動?
譯文【51CTO快譯】我自己在所在公司使用這種程序;在我們的開發團隊中,開發人員不斷需要在服務器上處理工作。所以,這是密切監視他們的最佳程序之一。該程序提供了一種出色的方法,便于監視用戶在做什么事、他們在啟動和運行什么命令、他們使用了多少資源以及用戶在系統上活動時間有多久。該程序的另一個優秀功能在于,顯示了Apache、MySQL、FTP和SSH等服務所使用的總資源。
監視Linux用戶活動
我認為,對每個想密切監視其服務器/系統上用戶活動的Linux/Unix系統管理員來說,psacct或acct是優秀的、必需的應用程序之一。
psacct或acct程序包提供了用于監視進程活動的幾項功能。
- ac命令輸出用戶登錄/退出(連接時間,數小時)的統計信息。
- lastcomm命令輸出用戶之前執行的命令的信息。
- accton命令用于開啟/關閉進程會計機制(process accounting)。
- sa命令用于概述之前執行的命令的信息。
- last和lastb這兩個命令顯示了最近登錄用戶的列表。
安裝psacct或acct程序包
psacct或acct都是類似的程序包,兩者之間沒有太大的區別,但是psacct程序包只適用于基于rpm的發行版,比如RHEL、CentOS和Fedora;而acct程序包適用于Ubuntu、Debian和Linux Mint等發行版。
想在基于rpm的發行版下安裝psacct程序包,請運行下列yum命令。
# yum install psacct
想在Ubuntu / Debian / Linux Mint下安裝acct程序包,請使用apt-get命令。
$ sudo apt-get install acct
或者
# apt-get install acctStarting psacct or acct service
默認情況下,psacct服務處于禁用模式,你需要在RHEL/CentOS/Fedora系統下手動開啟該服務。請使用下列命令,檢查服務狀態。
# /etc/init.d/psacct status Process accounting is disabled.
你看到狀態顯示為處于禁用狀態,不妨使用下列兩個命令手動開啟該服務。這兩個命令將創建一個/var/account/pacct文件,并開啟服務。
# chkconfig psacct on # /etc/init.d/psacct start Starting process accounting: [ OK ]
開啟服務后,再次檢查狀態,你會看到狀態已被啟用,如下所示。
# /etc/init.d/psacct status Process accounting is enabled.
在Ubuntu、Debian和Mint系統下,服務已自動啟動,你不需要再次啟動服務了。
顯示用戶連接時間的統計信息
沒有指定參數的ac命令會基于來自當前wtmp文件的用戶登錄/退出,顯示連接時間(小時)的總統計信息。
# ac total 1814.03
顯示每天的用戶統計信息
使用ac -d這個命令將輸出每天的總登錄時間(小時)。
# ac -d Sep 17 total 5.23 Sep 18 total 15.20 Sep 24 total 3.21 Sep 25 total 2.27 Sep 26 total 2.64 Sep 27 total 6.19 Oct 1 total 6.41 Oct 3 total 2.42 Oct 4 total 2.52 Oct 5 total 6.11 Oct 8 total 12.98 Oct 9 total 22.65 Oct 11 total 16.18
顯示每個用戶的時間總數
使用ac -p這個命令將顯示每個用戶的總登錄時間(小時)。
# ac -p root 1645.18 tecmint 168.96 total 1814.14
顯示單個用戶時間
想得到tecmint這個用戶的總登錄統計時間(小時),請使用下列命令。
# ac tecmint total 168.96
顯示用戶每天的登錄時間
下列命令將輸出tecmint這個用戶的每天總登錄時間(小時)。
# 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
輸出所有的帳戶活動信息
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是系統/用戶時間(以處理器分鐘為單位)之和。
- 2466k是處理器時間平均核心使用,也就是1k單位。
- sshd命令名稱
輸出單個的用戶信息
想獲得單個用戶的信息,請使用-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
輸出進程數量
這個命令輸出進程總數和處理器分鐘總數。如果你看到這些數字不斷增大,那么就要查看系統,分析一下出現了什么狀況。
# 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 mktempList
用戶最近執行的命令
latcomm這個命令用于搜索和顯示之前執行的用戶命令信息。你還可以搜索單個用戶名稱的命令。比如說,我們看到了用戶(tecmint)執行的命令:
# 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
原文鏈接:http://www.tecmint.com/how-to-monitor-user-activity-with-psacct-or-acct-tools/