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 パッケージは、次のような rpm ベースのディストリビューションでのみ使用できます。 RHEL、CentOS、Fedora として使用できますが、acct パッケージは Ubuntu< などのディストリビューションで使用できます。、Debian、Linux Mint。
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 または acct サービスの開始
デフォルトでは、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」の合計ログイン統計時間を時間単位で取得するには、次のコマンドを使用します。
# 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
詳細と使用方法については、これらのツールのマニュアル ページを確認してください。