psacct または acct ツールを使用して Linux ユーザーのアクティビティを監視する


psacct または acct はどちらも、Linux システムでのユーザーのアクティビティを監視するためのオープン ソース ユーティリティです。これらのユーティリティはバックグラウンドで実行され、システムでの各ユーザーのアクティビティと、消費されているリソースを追跡します。

私は会社でこれらのツールを個人的に使用しました。開発チームがあり、開発者はサーバーで継続的に作業しています。したがって、これらは監視するのに最適なユーティリティです。

これらのプログラムは、ユーザーが何をしているか、どのコマンドを実行しているか、それらによって消費されているリソースの数、およびユーザーがシステムでアクティブになっている時間を監視するための優れた方法を提供します。もう 1 つの便利な機能は、Apache、MySQL、FTP、SSH などのサービスによって消費される総リソースを提供することです。

[あなたも好きかもしれません: システムユーザーによって実行されたLinuxコマンドをリアルタイムで監視する方法]

これは、サーバー/システムでのユーザー アクティビティを追跡したいすべての Linux/Unix システム管理者にとって、最も必要とされる優れたユーティリティの 1 つだと思います。

psacct または acct パッケージは、プロセス アクティビティを監視するためのいくつかの機能を提供します。

  • ac コマンドは、ユーザーのログイン/ログアウト (接続時間) の統計を時間単位で出力します。
  • lastcomm コマンドは、ユーザーが以前に実行したコマンドの情報を出力します。
  • accton コマンドは、アカウンティングのプロセスをオン/オフするために使用されます。
  • sa コマンドは、以前に実行されたコマンドの情報を要約します。
  • last および lastb コマンドは、最後にログインしたユーザーのリストを表示します。

Linux での psacct または acct パッケージのインストール

psacct と acct はどちらも類似したパッケージであり、大きな違いはありませんが、psacct パッケージは RHEL、CentOS、Fedora などの rpm ベースのディストリビューションでのみ使用できますが、acct パッケージは Ubuntu、Debian、および Linux ミント。

rpm ベースのディストリビューションで psacct パッケージをインストールするには、次の yum コマンドを発行します。

# yum install psacct

Ubuntu/Debian/Linux Mint で apt コマンドを使用して acct パッケージをインストールします。

$ sudo apt install acct

他の Linux ディストリビューションでは、示されているようにインストールできます。

$ sudo apk add psacct          [On Alpine Linux]
$ sudo pacman -S acct          [On Arch Linux]
$ sudo zypper install acct     [On OpenSUSE]    

デフォルトでは、psacct サービスは無効モードになっているため、RHEL ベースのディストリビューションでは手動で開始する必要があります。次のコマンドを使用して、サービスのステータスを確認します。

$ sudo systemctl status psacct

ステータスが無効と表示されているので、次のコマンドを使用して手動で開始しましょう。これにより、/var/account/pacct ファイルが作成されます。

$ sudo systemctl start psacct
$ sudo systemctl enable psacct
$ sudo systemctl status psacct

Ubuntu、Debian、および Mint ではサービスが自動的に開始されるため、再度開始する必要はありません。

ユーザーの接続時間の統計を表示する

引数を指定せずに ac コマンドを実行すると、現在の wtmp ファイルからのユーザーのログイン/ログアウトに基づいて、接続時間の合計統計が時間単位で表示されます。

# ac

total     11299.15

日ごとの Linux ユーザーの統計を表示する

コマンド「ac -d」を使用すると、日ごとの合計ログイン時間が時間単位で表示されます。

# ac -d

Jun 25	total        0.19
Oct 13	total       14.45
Oct 27	total      672.00
Oct 28	total       15.82
Nov  3	total        4.29
Nov  5	total       10.13
Dec  7	total       14.04
Dec 10	total       23.60
Dec 27	total      808.93
Jan  3	total       12.31
Mar  3	total     1438.67
Jul 22	total     6767.81
Today	total     1517.09

すべての Linux ユーザーの合計ログイン時間を表示する

コマンド「ac -p」を使用すると、各 Linux ユーザーの合計ログイン時間が時間単位で出力されます。

# ac -p

	rockylinux                         425.61
	tecmint                            702.29
	root                             10171.54
	total    11299.44

Linux ユーザーのログイン時間を表示する

ユーザー「tecmint」の合計ログイン統計時間を時間単位で取得するには、コマンド as を使用します。

# ac tecmint
 total      702.29

ユーザーの日単位のログイン時間を表示する

次のコマンドは、ユーザー「tecmint」の 1 日あたりの合計ログイン時間を時間単位で出力します。

# 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

ユーザーが実行したすべての Linux コマンドを出力する

「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 は、CPU 分単位のシステム/ユーザー時間の合計です
  • 2466k は CPU 時間の平均コア使用量、つまり 1k ユニット
  • sshd コマンド名

Linux ユーザー情報の印刷

個々のユーザーの情報を取得するには、オプション -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

Linux プロセス数の出力

このコマンドは、プロセスの総数と CPU 分を出力します。これらの数値が継続的に増加している場合は、何が起こっているかについてシステムを調べるときです。

# 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   mktemp

ユーザーの最後に実行されたコマンドの一覧表示

「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

詳細と使用方法については、これらのツールのマニュアル ページを参照してください。