Мониторинг активности пользователей в системе с acct

Утилита acct или psacct отличный инструмент для мониторинга пользователей и приложений которые работают или работали в системе. Программа тихонько работает в режиме background и собирает в логи информацию. Сам пакет состоит из нескольких утилит которые будут описаны ниже в статье. Программа будет интересна и системным администраторам и владельцам компьютеров, на которых содержится множество рабочих учетных записей. Так же программа позволяет отслеживать количество ресурсов потребляемых тем или иным приложением. Честно говоря не знаю, так уж много от нее пользы, однако возможно вам она окажется полезной.

Установка и настройка acct

Пакет acct содержится по умолчанию в репозитариях Ubuntu и Fedora, по этому установка программы предельно проста:
Для Ubuntu:

sudo apt-get install acct
sudo apt-get install acct

Для Fedora:

su -c 'yum install psacct'
su -c 'yum install psacct'

Далее в статье речь будет идти об использовании утилиты в системе Ubuntu.
Запуск программы банален:

/etc/init.d/acct start
/etc/init.d/acct start

или

su -c 'service acct start'
su -c 'service acct start'

Так уж получилось, что в Ubuntu программа собрана с маленьким “багом”, она ищет свой конфиг немного не в том месте, вот тут /var/account/pacct, это легко исправить найдя сам конфиг в Ubuntu, он вот тут /var/log/account/pacct, исправляем с помощью символьной ссылки:

sudo ln -s log/account /var/account
sudo ln -s log/account /var/account

Теперь все утилиты из пакета acct будут работать корректно.

Пакет acct

Сам пакет состоит из следующих утилит:
ac – печатает статистику о времени которое пользователи провели находясь в системе
sa – собирает информацию о выполненных командах и запущенных приложениях, пользователей и т.д.
lastcomm – смотреть последние выполненные команды
accton – включить\выключить сбор инфы

Ну и теперь некоторые полезные принты вышеописанных программ.
Программка ac как я уже писал показывает время (в часах), которое пользователь провел в системе.
Информация за текущий день:

ac -d
Dec  1  total       15.69
Dec  2  total       18.26
Dec  3  total       46.16
Dec  4  total       30.51
Dec  5  total       52.59
Dec  6  total       42.48
Dec  7  total       27.20
Dec  8  total       75.88
Dec  9  total       54.27
Dec 10  total       86.13
ac -d
Dec  1	total       15.69
Dec  2	total       18.26
Dec  3	total       46.16
Dec  4	total       30.51
Dec  5	total       52.59
Dec  6	total       42.48
Dec  7	total       27.20
Dec  8	total       75.88
Dec  9	total       54.27
Dec 10	total       86.13

Время проведенное за год:

ac -y 
total      622.83
ac -y 
total      622.83

Вывод для каждого пользователя в системе:

ac -p
booch                              622.88
root                                 0.00
total      622.89
ac -p
booch                              622.88
root                                 0.00
total      622.89

lastcomm интересна тем, что вы можете посмотреть, каким было последнее действие пользователя, т.е. что он запустил, какую программу использовал и т.д.
Посмотреть последние действия определенного пользователя можно так:

lastcomm root
smbd             SF    root     __         0.00 secs Fri Dec 17 17:36
smbd             SF    root     __         0.00 secs Fri Dec 17 17:36
smbd             SF    root     __         0.00 secs Fri Dec 17 17:36
cron               SF    root     __         0.00 secs Fri Dec 17 17:35
sh                  S     root     __         0.00 secs Fri Dec 17 17:35
lastcomm root
smbd             SF    root     __         0.00 secs Fri Dec 17 17:36
smbd             SF    root     __         0.00 secs Fri Dec 17 17:36
smbd             SF    root     __         0.00 secs Fri Dec 17 17:36
cron               SF    root     __         0.00 secs Fri Dec 17 17:35
sh                  S     root     __         0.00 secs Fri Dec 17 17:35

Еще одна интересная функция, посмотреть кто и когда пользовался той или иной программой:

lastcomm ssh
ssh                    booch    pts/1      0.00 secs Fri Dec 17 16:59
ssh               F    booch    pts/1      0.00 secs Fri Dec 17 16:59
ssh               F    booch    pts/1      0.00 secs Fri Dec 17 16:59
lastcomm ssh
ssh                    booch    pts/1      0.00 secs Fri Dec 17 16:59
ssh               F    booch    pts/1      0.00 secs Fri Dec 17 16:59
ssh               F    booch    pts/1      0.00 secs Fri Dec 17 16:59

Просмотреть список всех программ которые так или иначе использовались в системе от запуска acct:

lastcomm > fileP
nano fileP
lastcomm > fileP
nano fileP

Программа показывает какие юзеры были и чё они делали, а так же, сколько ресурсов (процессорного времени и памяти) отхавали программы, которые были ими запущенны:

sa -u
root       0.00 cpu      422k mem      0 io accton          
root       0.00 cpu      474k mem      0 io acct            
root       0.00 cpu      474k mem      0 io invoke-rc.d     
root       0.00 cpu      474k mem      0 io acct.postinst   
root       0.20 cpu     3186k mem      0 io dpkg            
root       0.00 cpu     1298k mem      0 io touch           
root       0.00 cpu      474k mem      0 io sh              
root       0.00 cpu     7514k mem      0 io apt-get         *
root       0.59 cpu     2766k mem      0 io apt-get         
booch      0.02 cpu     1434k mem      0 io ps              
booch      0.00 cpu     1295k mem      0 io grep            
booch      0.02 cpu     1434k mem      0 io ps              
booch      0.00 cpu     1295k mem      0 io grep            
root       0.00 cpu        0k mem      0 io accton          
root       0.00 cpu      422k mem      0 io accton         
sa -u
root       0.00 cpu      422k mem      0 io accton          
root       0.00 cpu      474k mem      0 io acct            
root       0.00 cpu      474k mem      0 io invoke-rc.d     
root       0.00 cpu      474k mem      0 io acct.postinst   
root       0.20 cpu     3186k mem      0 io dpkg            
root       0.00 cpu     1298k mem      0 io touch           
root       0.00 cpu      474k mem      0 io sh              
root       0.00 cpu     7514k mem      0 io apt-get         *
root       0.59 cpu     2766k mem      0 io apt-get         
booch      0.02 cpu     1434k mem      0 io ps              
booch      0.00 cpu     1295k mem      0 io grep            
booch      0.02 cpu     1434k mem      0 io ps              
booch      0.00 cpu     1295k mem      0 io grep            
root       0.00 cpu        0k mem      0 io accton          
root       0.00 cpu      422k mem      0 io accton         

Количество процессов и количество использованного CPU времени, которые уже были использованы до настоящего времени.

sa -m
1566    1555.12re       4.10cp         0avio      2337k
booch                                1171     521.24re       3.73cp         0avio      2747k
root                                  388     870.34re       0.35cp         0avio      1115k
usbmux                                  1     162.52re       0.02cp         0avio       590k
sshd                                    6       1.01re       0.00cp         0avio      1744k
sa -m
1566    1555.12re       4.10cp         0avio      2337k
booch                                1171     521.24re       3.73cp         0avio      2747k
root                                  388     870.34re       0.35cp         0avio      1115k
usbmux                                  1     162.52re       0.02cp         0avio       590k
sshd                                    6       1.01re       0.00cp         0avio      1744k

Показывает все программы которые были запущенны на вашей машине:

sa -a
    1591    1585.82re       4.19cp         0avio      2352k
      44     355.26re       3.64cp         0avio     40183k   chrome*
       4       2.74re       0.22cp         0avio      1408k   find
       4       0.13re       0.08cp         0avio      7418k   aptitude
       8       1.81re       0.05cp         0avio      1662k   nano
       8       0.04re       0.04cp         0avio      4586k   python
       2     162.52re       0.02cp         0avio       534k   usbmuxd*
       2       0.62re       0.02cp         0avio      2766k   apt-get
      43       0.03re       0.02cp         0avio      1115k   troff
      43      15.48re       0.02cp         0avio      1436k   man
       4       0.49re       0.02cp         0avio     16372k   gnome-screensav
       1     162.08re       0.01cp         0avio      7400k   gvfsd-afc
      48       0.02re       0.01cp         0avio       482k   chrome-san
sa -a
    1591    1585.82re       4.19cp         0avio      2352k
      44     355.26re       3.64cp         0avio     40183k   chrome*
       4       2.74re       0.22cp         0avio      1408k   find
       4       0.13re       0.08cp         0avio      7418k   aptitude
       8       1.81re       0.05cp         0avio      1662k   nano
       8       0.04re       0.04cp         0avio      4586k   python
       2     162.52re       0.02cp         0avio       534k   usbmuxd*
       2       0.62re       0.02cp         0avio      2766k   apt-get
      43       0.03re       0.02cp         0avio      1115k   troff
      43      15.48re       0.02cp         0avio      1436k   man
       4       0.49re       0.02cp         0avio     16372k   gnome-screensav
       1     162.08re       0.01cp         0avio      7400k   gvfsd-afc
      48       0.02re       0.01cp         0avio       482k   chrome-san

Печатает в порядке сортировки (от большего к меньшему значению) программы которые использовали ваше процессорное время, и больше других загружали систему, а так же время использования последних в процентах:

sa -c
    1615  100.00%    1586.64re  100.00%       4.19cp  100.00%         0avio      2357k
      44    2.72%     355.26re   22.39%       3.64cp   86.80%         0avio     40183k   chrome*
       4    0.25%       2.74re    0.17%       0.22cp    5.31%         0avio      1408k   find
       4    0.25%       0.13re    0.01%       0.08cp    1.99%         0avio      7418k   aptitude
       8    0.50%       1.81re    0.11%       0.05cp    1.07%         0avio      1662k   nano
       8    0.50%       0.04re    0.00%       0.04cp    0.88%         0avio      4586k   python
       2    0.12%     162.52re   10.24%       0.02cp    0.52%         0avio       534k   usbmuxd*
      44    2.72%       0.03re    0.00%       0.02cp    0.47%         0avio      1115k   troff
sa -c
    1615  100.00%    1586.64re  100.00%       4.19cp  100.00%         0avio      2357k
      44    2.72%     355.26re   22.39%       3.64cp   86.80%         0avio     40183k   chrome*
       4    0.25%       2.74re    0.17%       0.22cp    5.31%         0avio      1408k   find
       4    0.25%       0.13re    0.01%       0.08cp    1.99%         0avio      7418k   aptitude
       8    0.50%       1.81re    0.11%       0.05cp    1.07%         0avio      1662k   nano
       8    0.50%       0.04re    0.00%       0.04cp    0.88%         0avio      4586k   python
       2    0.12%     162.52re   10.24%       0.02cp    0.52%         0avio       534k   usbmuxd*
      44    2.72%       0.03re    0.00%       0.02cp    0.47%         0avio      1115k   troff

Из листинга выше видно, что напрягает мою систему больше других браузер Chrome и что время его работы так же существенно выше, чем у других программ. Покажется вам программка полезной или нет, ваше дело, хотя… пара полезных функций в ней есть.

Стандартные средства Linux

С помощью стандартных средств Linux “отмониторить” вашу систему можно не хуже =) В данном случае помогут вот такие утилиты:
who – кто в системе
w – кто в системе и что они делают
users – показывает всех юзеров которое залогинены в системе
last – последние успешные логины в систему
uptime – время работы хоста

Вывод всей доступной инфы:

who -a
           cистемная загрузка 2010-12-17 15:01
           уровень выполнения 2 2010-12-17 15:01
ВХОД   tty4         2010-12-17 15:01              1249 id=4
ВХОД   tty5         2010-12-17 15:01              1253 id=5
ВХОД   tty2         2010-12-17 15:01              1260 id=2
ВХОД   tty3         2010-12-17 15:01              1261 id=3
ВХОД   tty6         2010-12-17 15:01              1264 id=6
ВХОД   tty1         2010-12-17 15:01              1444 id=1
booch    + tty7         2010-12-17 15:02  да        1620 (:0)
           pts/1        2010-12-17 18:51                 0 id=/1    терминал=0 выход=0
booch    + pts/2        2010-12-17 15:29 00:02        2549 (:0.0)
booch    + pts/3        2010-12-17 18:51   .          2549 (:0.0)
who -a
           cистемная загрузка 2010-12-17 15:01
           уровень выполнения 2 2010-12-17 15:01
ВХОД   tty4         2010-12-17 15:01              1249 id=4
ВХОД   tty5         2010-12-17 15:01              1253 id=5
ВХОД   tty2         2010-12-17 15:01              1260 id=2
ВХОД   tty3         2010-12-17 15:01              1261 id=3
ВХОД   tty6         2010-12-17 15:01              1264 id=6
ВХОД   tty1         2010-12-17 15:01              1444 id=1
booch    + tty7         2010-12-17 15:02  да        1620 (:0)
           pts/1        2010-12-17 18:51                 0 id=/1    терминал=0 выход=0
booch    + pts/2        2010-12-17 15:29 00:02        2549 (:0.0)
booch    + pts/3        2010-12-17 18:51   .          2549 (:0.0)

Показывает всех пользователей:

who  -u
booch    tty7         2010-12-17 15:02  да        1620 (:0)
booch    pts/2        2010-12-17 15:29 00:03        2549 (:0.0)
who  -u
booch    tty7         2010-12-17 15:02  да        1620 (:0)
booch    pts/2        2010-12-17 15:29 00:03        2549 (:0.0)

Количество юзеров в системе:

who -q
booch booch booch
число пользователей=3
who -q
booch booch booch
число пользователей=3

Скромные данные от утилиты w:

w
 18:54:45 up  3:52,  3 users,  load average: 0,46, 0,74, 0,77
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
booch    tty7     :0               15:02    3:52m 14:58   0.36s gnome-session
booch    pts/2    :0.0             15:29    3:42   0.15s 38.69s gnome-terminal
booch    pts/3    :0.0             18:51    0.00s  0.04s  0.01s w
w
 18:54:45 up  3:52,  3 users,  load average: 0,46, 0,74, 0,77
USER     TTY      FROM              [email protected]   IDLE   JCPU   PCPU WHAT
booch    tty7     :0               15:02    3:52m 14:58   0.36s gnome-session
booch    pts/2    :0.0             15:29    3:42   0.15s 38.69s gnome-terminal
booch    pts/3    :0.0             18:51    0.00s  0.04s  0.01s w

Пример вывода утилиты last

last booch
booch    pts/3        :0.0             Fri Dec 17 18:51   still logged in   
booch    pts/2        :0.0             Fri Dec 17 15:29   still logged in   
booch    pts/2        :0.0             Fri Dec 17 15:09 - 15:09  (00:00)    
booch    pts/1        :0.0             Fri Dec 17 15:08 - 18:51  (03:42)    
booch    tty7         :0               Fri Dec 17 15:02   still logged in   
booch    tty1                          Fri Dec 17 14:58 - down   (00:02)    
booch    tty1                          Fri Dec 17 14:58 - 14:58  (00:00)    
last booch
booch    pts/3        :0.0             Fri Dec 17 18:51   still logged in   
booch    pts/2        :0.0             Fri Dec 17 15:29   still logged in   
booch    pts/2        :0.0             Fri Dec 17 15:09 - 15:09  (00:00)    
booch    pts/1        :0.0             Fri Dec 17 15:08 - 18:51  (03:42)    
booch    tty7         :0               Fri Dec 17 15:02   still logged in   
booch    tty1                          Fri Dec 17 14:58 - down   (00:02)    
booch    tty1                          Fri Dec 17 14:58 - 14:58  (00:00)    

Дальше с ключами и параметрами экспериментируйте сами, тут ничего сложного нет.