前言
記賬工具可以提供諸如 Linux 系統中的連接、已執行的程序以及系統資源的使用等有底系統使用信息。這些記賬工具可以通過 psacct 或 acct 軟件包安裝。
psacct 和 acct 實際上是相同的。在基於 RPM 的系統中,它以 psacct 的形式存在;而在基於 DEB 的系統中,它作為 acct 提供。
安裝
大多流行的Linux發行版中都有 psacct或acct,例如debian中安裝:
sudo apt install -y acct
啓動
在 debian 上,acct 安裝後就會被啓動並設置為自動啓動,可以通過以下命令查看
sudo systemctl status acct
如果沒有啓動,可以用如下命令啓動
sudo systemctl start acct
sudo systemctl enable acct
使用
acct 軟件包包含以下用來監測用户和進程活動的工具:
- ac - 提供用户登錄時間的統計信息。
- lastcomm - 展示先前執行過的命令的信息。
- accton - 開啓或關閉進程記賬。
- dump-acct - 把 accton 的輸出文件轉化為易讀的格式。
- dump-utmp - 以易讀的方式打印 utmp 文件。
- sa - 彙總信息,關於先前執行的命令。
ac
ac 工具可以為你提供以小時為單位的連接時間報告,這樣你就能知道用户或一組用户連接到系統的時長。
# 展示所有用户的總連接時間
ac
# 按日期排序所有用户的總連接時間
ac -d
# 獲取各個用户的總連接時間
ac -p
# 獲取 rainux 用户的總連接時間
ac rainux
lastcomm
lastcomm 工具用於列出過去執行過的命令,它會按執行的最近程度將命令列在前面。
# 展示過去執行的命令
sudo lastcomm
# 展示特定用户過去執行的命令
sudo lastcomm username
# 展示特定命令過去被執行的次數
sudo lastcomm git
sa
sa 實用程序將總結關於先前執行的命令的信息。(可能需要使用絕對路徑才能使用)
# 打印所有命令的總結
sudo /usr/sbin/sa
示例輸出。每一行代表一個命令(或命令組)的統計彙總。第一列為該命令被執行的總次數。第二列為該命令總實際時間(real time, 從開始到結束,包括等待IO、睡眠等),單位分鐘。第三列為總CPU時間(實際佔用CPU的時間),單位為分鐘。第四列為平均IO操作數(average io operations, 通常為 0,除非系統啓用了詳細 I/O 統計)。第五列為平均內存佔用,這是RSS(平均駐留集)的近似值。第六列為命令名,帶*表示該命令是以 SUID/SGID 方式運行的(即提權執行)。
第一行為彙總行
sudo /usr/sbin/sa
1783 314.68re 0.02cp 0avio 2791k
15 1.12re 0.02cp 0avio 3223k ***other*
63 6.84re 0.00cp 0avio 40741k postgres*
7 305.02re 0.00cp 0avio 0k kworker/dying*
2 0.06re 0.00cp 0avio 4114k systemctl
4 0.11re 0.00cp 0avio 2335k dpkg
739 0.04re 0.00cp 0avio 645k sh
231 0.00re 0.00cp 0avio 1368k cat
230 0.00re 0.00cp 0avio 1639k awk
133 0.00re 0.00cp 0avio 1617k grep
72 0.00re 0.00cp 0avio 1908k lsblk
48 0.00re 0.00cp 0avio 2488k ps
24 0.00re 0.00cp 0avio 1370k wc
24 0.00re 0.00cp 0avio 645k trystart.sh*
19 0.01re 0.00cp 0avio 738k install-info
19 0.00re 0.00cp 0avio 835k gzip
15 0.00re 0.00cp 0avio 1652k cron*
14 0.00re 0.00cp 0avio 1366k flock
12 0.00re 0.00cp 0avio 1734k start.sh
12 0.00re 0.00cp 0avio 645k trystart.sh
12 0.00re 0.00cp 0avio 1734k start.sh*
12 0.00re 0.00cp 0avio 1373k chmod
12 0.00re 0.00cp 0avio 1367k dirname
12 0.00re 0.00cp 0avio 1367k whoami
11 0.00re 0.00cp 0avio 620k ac
8 0.32re 0.00cp 0avio 2299k sudo
7 1.12re 0.00cp 0avio 2292k git
5 0.01re 0.00cp 0avio 1365k whereis
5 0.00re 0.00cp 0avio 925k lastcomm
4 0.00re 0.00cp 0avio 850k iptables
3 0.00re 0.00cp 0avio 2125k bash*
3 0.00re 0.00cp 0avio 645k which
2 0.04re 0.00cp 0avio 3484k ssh
2 0.00re 0.00cp 0avio 204544k YDService
2 0.00re 0.00cp 0avio 629k rm
打印基於每個用户的進程數量和 CPU 分鐘數
sudo /usr/sbin/sa -m
dump-acct和dump-utmp
dump-acct 實用工具將 accton 格式的輸出文件顯示為人類可讀的格式。
dump-acct /var/log/account/pacct
dump-utmp 將 utmp 文件顯示為人類可讀的格式。
dump-utmp /var/run/utmp
accton
accton 命令將允許你開啓或關閉記賬。
# 開啓
accton on
# 關閉
accton off