Stories

Detail Return Return

[linux]記賬工具-監控用户活動 - Stories Detail

前言

記賬工具可以提供諸如 Linux 系統中的連接、已執行的程序以及系統資源的使用等有底系統使用信息。這些記賬工具可以通過 psacct 或 acct 軟件包安裝。

psacct 和 acct 實際上是相同的。在基於 RPM 的系統中,它以 psacct 的形式存在;而在基於 DEB 的系統中,它作為 acct 提供。

安裝

大多流行的Linux發行版中都有 psacctacct,例如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

Add a new Comments

Some HTML is okay.