Monitorare le attività utente su Linux con psacct

Mattepuffo's logo
Monitorare le attività utente su Linux con psacct

Monitorare le attività utente su Linux con psacct

psacct, che in alcune distro è acct, è tool che ci permette di monitorare le attività utente sulla nostra distro Linux.

Al suo interno ha questi comandi:

  • ac command prints the statistics of user logins/logouts (connect time) in hours.
  • lastcomm command prints the information of previously executed commands of the user.
  • accton commands is used to turn on/off process for accounting.
  • sa command summarizes information of previously executed commands.
  • last and lastb commands show a listing of last logged-in users.

Per installarlo su Debian:

# aptitude install acct

Viene installato come servizio, quindi accertiamoci che sia attivo:

# systemctl status acct
● acct.service - Kernel process accounting
     Loaded: loaded (/lib/systemd/system/acct.service; enabled; vendor preset: enabled)
     Active: active (exited) since Tue 2022-10-25 11:01:06 CEST; 4min 47s ago
       Docs: man:accton(8)
    Process: 13781 ExecStart=/usr/sbin/accton /var/log/account/pacct (code=exited, status=0/SUCCESS)
   Main PID: 13781 (code=exited, status=0/SUCCESS)
        CPU: 1ms

ott 25 11:01:06 matte-server systemd[1]: Starting Kernel process accounting...
ott 25 11:01:06 matte-server accton[13781]: Turning on process accounting, file set to '/var/log/account/pacct'.
ott 25 11:01:06 matte-server systemd[1]: Finished Kernel process accounting.

Per vedere le stitistiche dell'utente corrente:

# ac
	total      208.46

# ac -d
Oct  8	total        1.96
Oct 11	total        4.40
Oct 14	total        0.64
Oct 16	total        0.34
Oct 17	total        0.10
Oct 19	total        1.35
Oct 22	total        0.38
Oct 26	total       11.10
Oct 27	total        8.31
Nov  4	total        0.63
Nov  5	total        0.47
Nov  9	total        0.81
Nov 10	total        3.00
Nov 11	total        8.79
Nov 12	total        0.49
Nov 14	total        0.52
Nov 17	total        1.34
Nov 19	total        0.42
Nov 26	total        0.43
...................
Today	total        2.00

Nel secondo caso vediamo il raggruppamento per giorni.

Possiamo vedere anche il totale per tutti gli utenti:

# ac -p
	root                                 0.10
	fermat                             208.38
	total      208.48

Nel mio caso il pc è mio, quindi non ci sono altri utenti a parte il mio e root.

Per vedere i comandi eseguiti dall'utente:

# sa
     760     362.43re       0.23cp         0avio      8357k
      21      21.33re       0.22cp         0avio    179662k   ***other*
      10      10.00re       0.01cp         0avio      5212k   systemd-resolve
      11     330.93re       0.00cp         0avio         0k   kworker/dying*
       2       0.00re       0.00cp         0avio     13977k   php8.1
      10       0.01re       0.00cp         0avio      2548k   systemctl
       7       0.04re       0.00cp         0avio      2522k   dpkg
       6       0.00re       0.00cp         0avio       595k   pidof
       3       0.00re       0.00cp         0avio     12950k   php8.0
       2       0.00re       0.00cp         0avio     12832k   php7.4
     506       0.00re       0.00cp         0avio      2425k   mandb*
      58       0.01re       0.00cp         0avio       621k   sessionclean*
      28       0.00re       0.00cp         0avio      1650k   sed
      26       0.00re       0.00cp         0avio      2016k   find
      18       0.00re       0.00cp         0avio     53896k   postgres*
      10       0.00re       0.00cp         0avio      1341k   basename
       9       0.00re       0.00cp         0avio       621k   sh
       9       0.00re       0.00cp         0avio       596k   ac
       5       0.00re       0.00cp         0avio       934k   sa
       4       0.01re       0.00cp         0avio      1428k   less
       3       0.06re       0.00cp         0avio      2438k   git
       3       0.01re       0.00cp         0avio      1397k   sort
       3       0.00re       0.00cp         0avio       621k   phpquery*
       2       0.01re       0.00cp         0avio       621k   intellij-git-as
       2       0.00re       0.00cp         0avio      1719k   cron*
       2       0.00re       0.00cp         0avio      1345k   test

E per visualizzare informazioni sull'utente:

# sa -u
root       0.00 cpu      592k mem      0 io accton          
root       0.00 cpu     3266k mem      0 io systemd-tty-ask 
root       0.01 cpu     2542k mem      0 io systemctl       
root       0.00 cpu      621k mem      0 io acct.postinst   
man        0.00 cpu     2384k mem      0 io mandb           *
man        0.00 cpu     2384k mem      0 io mandb           *
man        0.00 cpu     2384k mem      0 io mandb           *
man        0.00 cpu     2430k mem      0 io mandb           *
man        0.00 cpu     2416k mem      0 io mandb           *
man        0.00 cpu     2416k mem      0 io mandb           *
man        0.00 cpu     2416k mem      0 io mandb           *
man        0.00 cpu     2450k mem      0 io mandb           *
......................
systemd-   0.07 cpu     6034k mem      0 io systemd-resolve 
root       0.00 cpu     2542k mem      0 io systemctl       
root       0.00 cpu     4390k mem      0 io systemd-resolve 
root       0.00 cpu     1725k mem      0 io sadc            
root       0.00 cpu      926k mem      0 io sa              
fermat     0.00 cpu     2438k mem      0 io git             
fermat     0.45 cpu  1467392k mem      0 io Sweeper thread  
fermat     0.00 cpu      621k mem      0 io intellij-git-as 
fermat     0.40 cpu  1467392k mem      0 io C2 CompilerThre 
fermat     0.00 cpu      621k mem      0 io intellij-git-as 
fermat     0.08 cpu    24768k mem      0 io git-remote-http 
fermat     0.00 cpu     2438k mem      0 io git             
fermat     0.00 cpu     2438k mem      0 io git             
root       0.00 cpu      926k mem      0 io sa              
root       0.00 cpu      926k mem      0 io sa              
postgres   0.00 cpu    53920k mem      0 io postgres        *
postgres   0.00 cpu    53872k mem      0 io postgres        *
root       0.00 cpu        0k mem      0 io kworker/dying   *
root       0.00 cpu      946k mem      0 io sa      

Per vedere gli ultimi comandi di un utente:

# lastcomm fermat
git                    fermat   __         0.00 secs Tue Oct 25 11:10
git                    fermat   __         0.00 secs Tue Oct 25 11:10
git-remote-http        fermat   __         0.08 secs Tue Oct 25 11:10
intellij-git-as        fermat   __         0.00 secs Tue Oct 25 11:10
C2 CompilerThre      X fermat   __         0.40 secs Tue Oct 25 11:10
intellij-git-as        fermat   __         0.00 secs Tue Oct 25 11:10
Sweeper thread       X fermat   __         0.45 secs Tue Oct 25 11:10
git                    fermat   __         0.00 secs Tue Oct 25 11:10
ProfilerChild    S   X fermat   __         9.72 secs Tue Oct 25 10:42

Enjoy!


Condividi

Commentami!