blog

テクノロジー|Linuxでユーザーの行動を監視する方法

Linuxの管理者として、あなたはすべてのユーザの活動を追跡する必要があります。...

Oct 11, 2025 · 11 min. read
シェア

Linux管理者として、すべてのユーザー・アクティビティを追跡する必要があります。サーバに障害が発生した場合、ユーザ・アクティビティを分析して表示することで、問題の原因を見つけることができます。Linuxユーザを監視する方法はいくつかあります。このガイドでは、Linuxユーザーの活動を監視するユーティリティである GNU Bookkeeping Toolについて特に説明します。

簿記ツールとは何ですか?

アカウンティング・ツールは、接続、実行されたプログラム、Linux システム上のシステム・リソースの使用など、基本的なシステム使用情報を提供します。これらのアカウンティング・ツールは、psacct または acct パッケージを通じてインストールできます。

psacctとacctは実質的に同じです。RPMベースのシステムではpsacctとして存在し、DEBベースのシステムではacctとして提供されます。

psacct または acct ユーティリティが何をするのか不思議に思うかもしれません。通常、コマンドラインでのユーザーの履歴は、$HOME ディレクトリの .bash_history ファイルに保存されます。ユーザーによっては、この履歴を編集、変更、または削除しようとする場合があります。

しかし、 コマンドラインの履歴を完全に 消去しても、帳簿管理ツールはユーザーの活動に関する情報を取得することができます。これは、すべてのプロセス・ログ・ファイルはルート・ユーザーが所有し、通常のユーザーは編集できないためです。

Linuxにpsacctまたはacctをインストールする方法

psacct/acctは、いくつかの一般的なLinuxディストリビューションでパッケージ化されています。

Alpine Linuxにpsacctをインストールするには、以下のコマンドを実行します:

  1. $ sudo apk add psacct

Arch Linux とその亜種に acct をインストールする場合は、以下のコマンドを実行してください:

  1. $ sudo pacman -S acct

Fedora、RHELおよびその派生版にpsacctをインストールするには、以下のコマンドを実行します:

  1. $ sudo dnf install psacct

RHEL 6 以前では、psacct のインストールには dnf の代わりに yum コマンドを使用する必要があります。

  1. $ sudo yum install psacct

Debian、Ubuntu、Linux Mintでは、以下のコマンドでacctをインストールしてください:

  1. $ sudo apt install acct

acctがopenSUSEにインストールされている場合は、実行してください:

  1. $ sudo zypper install acct

psacct/acct サービスを開始します。

psacct 有効にしてオンにするには、次のコマンドを実行します:

  1. $ sudo systemctl enable psacct

その後、 psacct サービスを開始します:

  1. $ sudo systemctl start psacct

psacct ロードされ、有効になっているかどうかを確認する必要がある場合は、以下を実行してください:

  1. $ sudo systemctl status psacct

DEBベースのシステムでは、インストール後にacctサービスが自動的に開始します。

acctサービスが開始したことを確認したい場合は、以下のコマンドを実行します:

  1. $ sudo systemctl status acct
  1. アカウント.service - Kernel process accounting
  2. Loaded: loaded (/lib/systemd/system/acct.service; enabled; vendor preset: enabled)
  3. Active: active (exited) since Thu IST; 28s ago
  4. Docs: man:accton(8)
  5. Process: 3241 ExecStart=/usr/sbin/accton /var/log/account/pacct (code=exited, status=0/SUCCESS)
  6. Main PID: 3241 (code=exited, status=0/SUCCESS)
  7. CPU: 879us
  8. Oct :35 ubuntu2204 systemd[1]: Starting Kernel process accounting...
  9. Oct :35 ubuntu2204 accton: Turning on process accounting, file set to '/var/log/account/pacct'.
  10. Oct :35 ubuntu2204 systemd[1]: Finished Kernel process accounting.

psacctまたはacctを使ったLinuxでのユーザー活動の監視

psacct パッケージには、ユーザとプロセスの活動を監視するための以下のツールが含まれています:

  • ac - ユーザーのログイン時間に関する統計を提供します。
  • lastcomm - 以前に実行したコマンドに関する情報を表示します。
  • プロセスのブックキーピングを有効または無効にaccton
  • accton 出力ファイルを読みやすい形式に変換します。
  • dump-utmp ファイルを読みやすい形式で表示します。
  • sa - 以前に実行されたコマンドに関する情報を集約します。

それでは、各ツールを使ってLinuxユーザーの行動を監視する方法を学びましょう。

acコマンドは次のように使用します。

acユーティリティは、接続時間のレポートを時間単位で提供することができます。

全ユーザーの合計接続時間が表示されます。

上記のコマンドは、全ユーザーの合計接続時間を表示します。

  1. total 52.91

全ユーザーの合計接続時間が日付順に表示されます。

次のように -d パラメータを使用すると、すべてのユーザーの接続時間を日付順にソートして表示できます:

  1. $ ac -d

サンプル出力:

  1. May 11 total 4.29
  2. May 13 total 3.23
  3. May 14 total 7.66
  4. May 15 total 8.97
  5. May 16 total 0.52
  6. May 20 total 4.09
  7. May 24 total 1.32
  8. Jun 9 total 15.18
  9. Jun 10 total 2.97
  10. Jun 22 total 2.61
  11. Jul 19 total 1.95
  12. Today total 0.29

各ユーザーの合計接続時間を取得します。

pパラメータを使用すると、各ユーザがシステムに接続している合計時間数を表示できます。

  1. $ ac -p

サンプル出力:

  1. ostechnix 52.85
  2. root 0.51
  3. total 53.36

指定したユーザーの総接続時間が表示されます。

特定のユーザーの総ログイン時間を表示することもできます。

  1. $ ac ostechnix

サンプル出力:

  1. total 52.95
特定のユーザーの日付ごとの合計接続時間が表示されます。

特定のユーザーがいつログインしたかを日付別に見るには、次のように実行します:

  1. $ ac -d ostechnix

サンプル出力:

  1. May 11 total 4.29
  2. May 13 total 3.23
  3. May 14 total 7.66
  4. May 15 total 8.97
  5. May 16 total 0.01
  6. May 20 total 4.09
  7. May 24 total 1.32
  8. Jun 9 total 15.18
  9. Jun 10 total 2.97
  10. Jun 22 total 2.61
  11. Jul 19 total 1.95
  12. Today total 0.68

  1. $ man ac

lastcommコマンドの使用例

lastcommユーティリティは、過去に実行されたコマンドをリストアップするために使用されます。 このユーティリティは、最近実行された順にコマンドをリストアップします。

コマンドは過去に実行されます。
  1. $ lastcomm

出力例:

  1. systemd-hostnam S root __ 0.06 secs Thu Oct
  2. systemd-localed S root __ 0.06 secs Thu Oct
  3. bash F ostechni pts/1 0.00 secs Thu Oct
  4. awk ostechni pts/1 0.00 secs Thu Oct
  5. bash F ostechni pts/1 0.00 secs Thu Oct
  6. uname ostechni pts/1 0.00 secs Thu Oct
  7. bash F ostechni pts/1 0.00 secs Thu Oct
  8. sed ostechni pts/1 0.00 secs Thu Oct
  9. bash F ostechni pts/1 0.00 secs Thu Oct
  10. bash F ostechni pts/1 0.00 secs Thu Oct
  11. grep ostechni pts/1 0.00 secs Thu Oct
  12. bash F ostechni pts/1 0.00 secs Thu Oct
  13. bash F ostechni pts/1 0.00 secs Thu Oct
  14. grep ostechni pts/1 0.00 secs Thu Oct
  15. bash F ostechni pts/1 0.00 secs Thu Oct
  16. bash F ostechni pts/1 0.00 secs Thu Oct
以下のコマンドを使用すると、特定のユーザーが以前に実行したコマンドを印刷できます。

上記のコマンドは全ユーザーのコマンドを表示します。特定のユーザが過去に実行したコマンドを表示するには、以下のコマンドを使用します:

  1. $ lastcomm ostechnix

サンプル出力:

  1. less ostechni pts/1 0.00 secs Thu Oct
  2. lastcomm ostechni pts/1 0.00 secs Thu Oct
  3. lastcomm ostechni pts/1 0.00 secs Thu Oct
  4. lastcomm ostechni pts/1 0.00 secs Thu Oct
  5. gdbus X ostechni __ 0.00 secs Thu Oct
  6. lastcomm ostechni pts/1 0.00 secs Thu Oct
  7. ac ostechni pts/1 0.00 secs Thu Oct
  8. update-notifier F ostechni __ 0.00 secs Thu Oct
  9. apport-checkrep ostechni __ 0.06 secs Thu Oct
  10. apport-checkrep ostechni __ 0.05 secs Thu Oct
  11. systemctl ostechni __ 0.00 secs Thu Oct
  12. apt-check ostechni __ 0.81 secs Thu Oct
  13. dpkg ostechni __ 0.00 secs Thu Oct
  14. ischroot ostechni __ 0.00 secs Thu Oct
  15. dpkg ostechni __ 0.00 secs Thu Oct
特定のコマンドが実行された回数が表示されます。

また、特定のコマンドが何回実行されたかを確認することもできます。

  1. $ lastcomm apt

サンプル出力:

  1. apt S root pts/2 0.70 secs Thu Oct
  2. apt F root pts/2 0.00 secs Thu Oct
  3. apt F root pts/2 0.00 secs Thu Oct

上記の出力に示されているように、rootユーザーはaptコマンドを3回実行しました。

  1. $ man lastcomm

sa "コマンドの例

sa ユーティリティは、以前に実行したコマンドに関する情報を要約します。

すべてのコマンドの要約を表示

サンプル出力:

  1. .63re 0.23cp 0avio 32712k
  2. re 0.05cp 0avio 36877k ***other*
  3. re 0.05cp 0avio k gdbus
  4. 3 0.05re 0.04cp 0avio 12015k apt-check
  5. re 0.02cp 0avio 0k kworker/dying*
  6. 2 51.87re 0.01cp 0avio k Docker Desktop
  7. 5 0.03re 0.01cp 0avio 785k snap-confine
  8. 8 59.48re 0.01cp 0avio 85838k gmain
  9. 5 103.94re 0.01cp 0avio k dconf worker
  10. re 0.00cp 0avio 2937k systemd-udevd*
  11. 7 0.01re 0.00cp 0avio
  12. 3 1.51re 0.00cp 0avio 3672k systemd-timedat
  13. 2 0.00re 0.00cp 0avio 10236k apport-checkrep
  14. 2 0.01re 0.00cp 0avio k ThreadPoolForeg*
  15. 2 0.00re 0.00cp 0avio 8550k package-data-do
  16. 3 0.79re 0.00cp 0avio 2156k dbus-daemon
  17. re 0.00cp 0avio 39631k ffmpeg
プロセス数とCPU分を表示するには、「プロセスを表示」ボタンをクリックします。

各ユーザーのプロセス数とCPU分数を表示するには、-mフラグを付けてsaコマンドを実行します:

  1. $ sa -m

出力例:

  1. .63re 0.23cp 0avio 32651k
  2. root re 0.09cp 0avio 3847k
  3. ostechnix re 0.08cp 0avio 47788k
  4. gdm re 0.06cp 0avio 63715k
  5. colord 2 52.01re 0.00cp 0avio 89720k
  6. geoclue 1 1.01re 0.00cp 0avio 70608k
  7. jellyfin re 0.00cp 0avio 39631k
  8. man 1 0.00re 0.00cp 0avio 3124k
  9. kernoops 4 104.12re 0.00cp 0avio 3270k
  10. sshd 1 0.05re 0.00cp 0avio 3856k
  11. whoopsie 1 0.00re 0.00cp 0avio 8552k
コマンド名とユーザーIDが表示されます。

アカウント・ファイル内の各コマンドについて、-uフラグを使用してユーザーIDとコマンド名を表示します。

  1. $ sa -u

サンプル出力:

  1. root 0.00 cpu 693k mem 0 io accton
  2. root 0.00 cpu 3668k mem 0 io systemd-tty-ask
  3. root 0.00 cpu 3260k mem 0 io systemctl
  4. root 0.01 cpu 3764k mem 0 io deb-systemd-inv
  5. root 0.00 cpu 722k mem 0 io acct.postinst
  6. root 0.00 cpu 704k mem 0 io rm
  7. root 0.00 cpu 939k mem 0 io cp
  8. root 0.00 cpu 704k mem 0 io rm
  9. root 0.00 cpu 951k mem 0 io find
  10. root 0.00 cpu 911k mem 0 io gzip
  11. root 0.00 cpu 722k mem 0 io NY
  12. root 0.00 cpu 748k mem 0 io install-info
  13. root 0.00 cpu 911k mem 0 io gzip
  1. $ man sa

dump-acctおよびdump-utmpコマンドは、以下の目的で使用されます。

dump-acct ユーティリティは、accton フォーマットの出力ファイルを人間が読める形式で表示します。

  1. $ dump-acct /var/account/pacct

utmp ファイルを人間が読める形式で表示dump-utmp

  1. $ dump-utmp /var/run/utmp
  1. $ man dump-acct
  1. $ man dump-utmp

アクトン・オーダー

accton 記帳のオン・オフができます。

プロセス・ブックキーピングを有効にするには

  1. $ accton on

閉じるには

  1. $ accton off
  1. $ man accton

概要

すべてのLinux管理者は、すべてのユーザの挙動を監視するために、GNU bookkeepingユーティリティを知っておくべきです。これらのユーティリティはトラブルシューティングの際に非常に役に立ちます。

経由: ---ux/

Read next