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!
linux psacct acct lastcom
Commentami!