システムのアカウンティング情報を取得する

コマンドの実行履歴を取っておくのに、
システムアカウンティングを有効にしておくのもいいと思います。

ということで、今日は「psacct」を使ってみます。

準備

通常初期状態では有効になっていないので、以下の作業を行います。

  • プロセスアカウンティングを有効にする
 # /etc/init.d/psacct start
 プロセスアカウントを開始中:                                [  OK  ]
  • 起動時にプロセスアカウンティングを有効にする
 # chkconfig --level 345 psacct on
 # chkconfig --list psacct
 psacct          0:off   1:off   2:off   3:on    4:on    5:on    6:off

使う

採取した情報を見てみます。

saコマンド

saコマンドでコマンド実行の統計情報を表示します。

# sa
      82       1.29re       0.01cp     1257k
       5       0.01re       0.00cp     2162k   rpmq
       3       0.00re       0.00cp     1555k   troff
       5       0.02re       0.00cp      956k   ***other
       3       0.31re       0.00cp     1389k   man
       3       0.00re       0.00cp     1386k   grotty
       3       0.30re       0.00cp      666k   less
       3       0.02re       0.00cp     1593k   nroff
       9       0.01re       0.00cp     1229k   iconv
       9       0.00re       0.00cp      748k   gunzip
       6       0.30re       0.00cp     1407k   sh*
       6       0.00re       0.00cp     1132k   rm
       4       0.00re       0.00cp     1399k   chkconfig
       3       0.30re       0.00cp     1407k   sh
       3       0.01re       0.00cp     1467k   groff
       3       0.00re       0.00cp      892k   gtbl
       3       0.00re       0.00cp      727k   mktemp
       3       0.00re       0.00cp     1593k   nroff*
       3       0.00re       0.00cp     1365k   cat
       3       0.00re       0.00cp     1372k   locale
       2       0.00re       0.00cp     1304k   initlog

「sa -m」でユーザー別になります。

 # sa -m
                                        83       1.29re       0.01cp     1250k
 root                                   83       1.29re       0.01cp     1250k
lastcommコマンド

「lastcomm」コマンドで実行されたコマンドの一覧を表示します。
「--user」「--command」「--tty」オプションで条件を指定できます。

# lastcomm
 cp                      root     __         0.00 secs Thu Jul  8 14:52
 date                    root     __         0.00 secs Thu Jul  8 14:52
 prelink                 root     __         0.00 secs Thu Jul  8 14:52
 find                    root     __         0.00 secs Thu Jul  8 14:52
 grep                    root     __         0.00 secs Thu Jul  8 14:52
 renice                  root     __         0.00 secs Thu Jul  8 14:52
 awk                     root     __         0.00 secs Thu Jul  8 14:52
 logrotate               root     __         0.00 secs Thu Jul  8 14:52
 logrotate               root     __         0.02 secs Thu Jul  8 14:52
 sh                      root     __         0.00 secs Thu Jul  8 14:52
 kill                    root     __         0.00 secs Thu Jul  8 14:52
 sh                      root     __         0.00 secs Thu Jul  8 14:52
 cat                     root     __         0.00 secs Thu Jul  8 14:52
 sh                      root     __         0.00 secs Thu Jul  8 14:52
 puppet                  root     __         0.01 secs Thu Jul  8 14:52
 initlog                 root     __         0.00 secs Thu Jul  8 14:52
 puppet                  root     __         0.00 secs Thu Jul  8 14:52
 pidof                   root     __         0.01 secs Thu Jul  8 14:52
 pidof                   root     __         0.01 secs Thu Jul  8 14:52
 puppet                  root     __         0.00 secs Thu Jul  8 14:52
 consoletype             root     __         0.00 secs Thu Jul  8 14:52
 puppetmaster            root     __         0.00 secs Thu Jul  8 14:52
 puppetmaster            root     __         0.00 secs Thu Jul  8 14:52
 consoletype             root     __         0.00 secs Thu Jul  8 14:52
 accton                  root     __         0.00 secs Thu Jul  8 14:52

実運用で使う場合、ログの管理要件が重要になります。
パッケージを使っている場合は、「logrotated」でローテーションされるようになっています。

 # prerotate loses accounting records, let's no
 #prerotate
 #        /usr/sbin/accton
 #endscript
     compress
     delaycompress
     notifempty
     daily
     rotate 31
     create 0600 root root
     postrotate
         /usr/sbin/accton /var/account/pacct
     endscript
 }

必要に応じて設定変えてやればよいかと思います。

今日はこんなところで。