Kako spremljati aktivnost uporabnika z orodji psacct ali acct


psacct ali acct sta odprtokodna aplikacija za spremljanje dejavnosti uporabnikov v sistemu. Te aplikacije se izvajajo v ozadju in spremljajo vsako dejavnost uporabnikov v vašem sistemu ter vire, ki se porabijo.

Ta program sem osebno uporabljal v našem podjetju, imamo razvojno skupino, kjer naši razvijalci nenehno delajo na strežnikih. Torej, to je eden najboljših programov za njihovo spremljanje. Ta program ponuja odličen način za spremljanje, kaj uporabniki počnejo, katere ukaze sprožijo, koliko virov porabijo, kako dolgo so uporabniki aktivni v sistemu. Druga odlična lastnost tega programa je, da daje skupne vire, ki jih porabijo storitve, kot so Apache, MySQL, FTP, SSH itd.

Mislim, da je to ena odličnih in nujno potrebnih aplikacij za vsakega sistemskega skrbnika sistema Linux/Unix, ki je želel slediti uporabniškim aktivnostim na svojih strežnikih/sistemih.

Paket psacct ali acct ponuja več funkcij za spremljanje dejavnosti procesa.

  1. ukaz ac natisne statistiko uporabniških prijav/odjav (čas povezave) v urah.
  2. lastcomm ukaz natisne podatke o predhodno izvedenih ukazih uporabnika.
  3. ukazi accton se uporabljajo za vklop/izklop postopka računovodstva.
  4. ukaz sa povzema informacije o predhodno izvedenih ukazih.
  5. ukaza last in lastb prikazujeta seznam zadnjih prijavljenih uporabnikov.

Nameščanje paketov psacct ali acct

psacct ali acct sta podobna paketa in med njima ni velike razlike, vendar je paket psacct na voljo samo za distribucije na osnovi rpm, kot so RHEL, CentOS in Fedora, paket acct pa je na voljo za distribucije, kot so Ubuntu, Debian in Linux Mint.

Če želite namestiti paket psacct v distribucije, ki temeljijo na rpm, izdajte naslednji ukaz yum.

# yum install psacct

Če želite namestiti paket acct z ukazom apt-get pod Ubuntu/Debian/Linux Mint.

$ sudo apt-get install acct

OR

# apt-get install acct

Storitev psacct je privzeto v onemogočenem načinu in jo morate zagnati ročno v sistemih RHEL/CentOS/Fedora. Z naslednjim ukazom preverite stanje storitve.

# /etc/init.d/psacct status
Process accounting is disabled.

Stanje je prikazano kot onemogočeno, zato ga zaženimo ročno z uporabo naslednjih obeh ukazov. Ta dva ukaza bosta ustvarila datoteko/var/account/pacct in zagnala storitve.

# chkconfig psacct on
# /etc/init.d/psacct start
Starting process accounting:                               [  OK  ]

Po zagonu storitve še enkrat preverite stanje, dobili boste stanje, kot je omogočeno, kot je prikazano spodaj.

# /etc/init.d/psacct status
Process accounting is enabled.

V Ubuntuju se storitev Debian in Mint zažene samodejno, vam je ni treba znova zagnati.

ukaz ac brez navedbe katerega koli argumenta bo prikazal skupno statistiko časa povezave v urah na podlagi uporabniških prijav/odjav iz trenutne datoteke wtmp.

# ac
total     1814.03

Z uporabo ukaza “ac -d” boste po dnevih natisnili skupni čas prijave v urah.

# ac -d
Sep 17  total        5.23
Sep 18  total       15.20
Sep 24  total        3.21
Sep 25  total        2.27
Sep 26  total        2.64
Sep 27  total        6.19
Oct  1  total        6.41
Oct  3  total        2.42
Oct  4  total        2.52
Oct  5  total        6.11
Oct  8  total       12.98
Oct  9  total       22.65
Oct 11  total       16.18

Uporaba ukaza “ac -p” bo natisnila skupni čas prijave vsakega uporabnika v urah.

# ac -p
        root                              1645.18
        tecmint                            168.96
        total     1814.14

Če želite pridobiti skupni čas prijavne statistike uporabnika “tecmint” v urah, uporabite ukaz kot.

# ac tecmint
 total      168.96

Naslednji ukaz natisne celodnevni skupni čas prijave uporabnika "tecmint" v urah.

# ac -d tecmint
Oct 11  total        8.01
Oct 12  total       24.00
Oct 15  total       70.50
Oct 16  total       23.57
Oct 17  total       24.00
Oct 18  total       18.70
Nov 20  total        0.18

Ukaz "sa" se uporablja za tiskanje povzetka ukazov, ki so jih izvedli uporabniki.

# sa
       2       9.86re       0.00cp     2466k   sshd*
       8       1.05re       0.00cp     1064k   man
       2      10.08re       0.00cp     2562k   sshd
      12       0.00re       0.00cp     1298k   psacct
       2       0.00re       0.00cp     1575k   troff
      14       0.00re       0.00cp      503k   ac
      10       0.00re       0.00cp     1264k   psacct*
      10       0.00re       0.00cp      466k   consoletype
       9       0.00re       0.00cp      509k   sa
       8       0.02re       0.00cp      769k   udisks-helper-a
       6       0.00re       0.00cp     1057k   touch
       6       0.00re       0.00cp      592k   gzip
       6       0.00re       0.00cp      465k   accton
       4       1.05re       0.00cp     1264k   sh*
       4       0.00re       0.00cp     1264k   nroff*
       2       1.05re       0.00cp     1264k   sh
       2       1.05re       0.00cp     1120k   less
       2       0.00re       0.00cp     1346k   groff
       2       0.00re       0.00cp     1383k   grotty
       2       0.00re       0.00cp     1053k   mktemp
       2       0.00re       0.00cp     1030k   iconv
       2       0.00re       0.00cp     1023k   rm
       2       0.00re       0.00cp     1020k   cat
       2       0.00re       0.00cp     1018k   locale
       2       0.00re       0.00cp      802k   gtbl

  1. 9,86re je "realni čas" glede na minute stenske ure
  2. 0,01 cp je vsota sistemskega/uporabniškega časa v minutah procesorja
  3. 2466k je povprečna poraba jedra v času procesorja, tj. 1k enot
  4. ime ukaza sshd

Za informacije o posameznem uporabniku uporabite možnosti -u.

# sa -u
root       0.00 cpu      465k mem accton
root       0.00 cpu     1057k mem touch
root       0.00 cpu     1298k mem psacct
root       0.00 cpu      466k mem consoletype
root       0.00 cpu     1264k mem psacct           *
root       0.00 cpu     1298k mem psacct
root       0.00 cpu      466k mem consoletype
root       0.00 cpu     1264k mem psacct           *
root       0.00 cpu     1298k mem psacct
root       0.00 cpu      466k mem consoletype
root       0.00 cpu     1264k mem psacct           *
root       0.00 cpu      465k mem accton
root       0.00 cpu     1057k mem touch

Ta ukaz natisne skupno število procesov in minut procesorja. Če opazite, da se te številke še naprej povečujejo, je čas, da v sistem preučimo, kaj se dogaja.

# sa -m
sshd                                    2       9.86re       0.00cp     2466k
root                                  127      14.29re       0.00cp      909k

Ukaz "sa -c" prikazuje največji odstotek uporabnikov.

# sa -c
 132  100.00%      24.16re  100.00%       0.01cp  100.00%      923k
       2    1.52%       9.86re   40.83%       0.00cp   53.33%     2466k   sshd*
       8    6.06%       1.05re    4.34%       0.00cp   20.00%     1064k   man
       2    1.52%      10.08re   41.73%       0.00cp   13.33%     2562k   sshd
      12    9.09%       0.00re    0.01%       0.00cp    6.67%     1298k   psacct
       2    1.52%       0.00re    0.00%       0.00cp    6.67%     1575k   troff
      18   13.64%       0.00re    0.00%       0.00cp    0.00%      509k   sa
      14   10.61%       0.00re    0.00%       0.00cp    0.00%      503k   ac
      10    7.58%       0.00re    0.00%       0.00cp    0.00%     1264k   psacct*
      10    7.58%       0.00re    0.00%       0.00cp    0.00%      466k   consoletype
       8    6.06%       0.02re    0.07%       0.00cp    0.00%      769k   udisks-helper-a
       6    4.55%       0.00re    0.00%       0.00cp    0.00%     1057k   touch
       6    4.55%       0.00re    0.00%       0.00cp    0.00%      592k   gzip
       6    4.55%       0.00re    0.00%       0.00cp    0.00%      465k   accton
       4    3.03%       1.05re    4.34%       0.00cp    0.00%     1264k   sh*
       4    3.03%       0.00re    0.00%       0.00cp    0.00%     1264k   nroff*
       2    1.52%       1.05re    4.34%       0.00cp    0.00%     1264k   sh
       2    1.52%       1.05re    4.34%       0.00cp    0.00%     1120k   less
       2    1.52%       0.00re    0.00%       0.00cp    0.00%     1346k   groff
       2    1.52%       0.00re    0.00%       0.00cp    0.00%     1383k   grotty
       2    1.52%       0.00re    0.00%       0.00cp    0.00%     1053k   mktemp

Ukaz 'latcomm' se uporablja za iskanje in prikaz predhodno izvedenih informacij o uporabniških ukazih. Iščete lahko tudi po ukazih posameznih uporabniških imen. Na primer, vidimo ukaze uporabnika (tecmint).

# lastcomm tecmint
su                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
id                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
grep                    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
grep                    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
dircolors               tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
tput                    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
tty                     tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
id                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
bash               F    tecmint  pts/0      0.00 secs Wed Feb 13 15:56
id                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56

S pomočjo ukaza lastcomm si boste lahko ogledali individualno uporabo vsakega ukaza.

# lastcomm ls
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56
ls                      tecmint  pts/0      0.00 secs Wed Feb 13 15:56