Hướng dẫn quản lí hoạt động của người dùng trong hệ thống bằng công cụ psacct và acct

psacct hay acct đều là những ứng dụng mã nguồn mở sử dụng cho việc theo dõi hoạt động của người dùng trên hệ thống. Những ứng dụng trên sẽ chạy ngầm và theo dõi hoạt đoọng của từng users trong hệ thống và những tài nguyên đã được sử dụng
Tôi đã từng dùng những công cụ này tại công ty của tôi, chúng tôi có một đội ngũ phát triển nơi những lập trình viên vận hành máy chủ liên tục. Có thể nói đây là công cụ thật sự tốt để theo dõi họ, như theo dõi những người dùng đang làm gì, những câu lệnh họ đang thực hiện, lượng tài nguyên họ đang sử dụng, một users đang active trên máy chủ là bao lâu. Một chức năng tuyệt vời của công cụ này là cho chúng ta tổng tài nguyên đã tiêu tốn chia theo dịch vụ như Apache, MySQL, FTP, SSH
Tôi nghĩ đây là một trong những công cụ tuyệt vời mà bất cứ quản trị viên hệ thống Linux nào cũng cần phải có. Các công cụ psacct hay acct cung cấp một số chức năng phục vụ cho việc quản lí hoạt động người dùng

  1. Câu lệnh ac in ra thống kê về thời gian đăng nhập/đăng xuất của từng user
  2. Câu lệnh lastcomm in ra thông tin về những câu lệnh đã được thực thi bởi mỗi user
  3. Câu lệnh accton sử dụng để tắt/bật các tiến trình phục vụ cho việc thống kê
  4. Câu lệnh sa đưa ra một báo cáo tổng quát về những câu lệnh đã được thực thi
  5. Câu lệnh last và lastb hiện danh sách của những users vừa đăng nhập/đăng xuất

Cài đặt công cụ

psacct hay acct có các chức năng tương tự giống nhau. Chỉ có sự khác biệt như

  1. psacct dành cho các distro RPM-Based như RHEL, CentOS hay Fedora
  2. acct dành cho các Distro như Ubuntu, Debian, Linux Mint

Chúng ta có thể cài đặt psacct thông qua công cụ yum

sudo yum install psacct

Và acct thông qua apt

sudo apt-get install acct

Khởi chạy services

Điều này bạn chỉ cần làm trên RHEL, CentOS hay Fedora. Còn trên Ubuntu, Debian, Linux Mint services được khởi chạy tự động, bạn không cần làm bước này
Chỉ cần thực hiện 2 câu lệnh sau

chkconfig psacct on
/etc/init.d/psacct start

Kiểm tra lại bằng câu lệnh

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

Hiển thị thông số về thời gian kết nối của mỗi users

Câu lệnh ac không đi kèm tham số nào sẽ hiển thị tổng số thời gian kết nối theo giờ dựa trên thời gian user đăng nhập/đăng xuất dựa trên file wtmp

ac
total 1814.03

Hiển thị thông số users theo từng ngày

Câu lệnh ac-d sẽ in ra tổng thời gian login theo giờ dựa trên từng ngày

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

Hiển thị thời gian tổng cộng cho từng Users

Câu lệnh ac-p sẽ in ra tổng thời gian login cho từng users

ac -p
 root 1645.18
tecmint 168.96
total 1814.14

Hiển thị thời gian cho một user cụ thể

Để lấy thống kê cho một user cụ thể, chẳng hạn như user cloudzone ta chỉ cần thêm tên user vào sau mỗi câu lệnh

In tất cả thông tin về hoạt động của user

Sử dụng câu lệnh sa

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
  • 9.86 re là thời gian thực tế tính theo giờ trên đồng hồ
  • 0.01cp là tổng thời gian của hệ thống/user tính theo phút trên CPU
  • 2466k là số cpu-time trung bình mà mỗi core sử dụng
  • sshd là tên câu lệnh

In thông tin của từng user

Sử dụng câu lệnh sa -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

In ra số lượng tiến trình

Câu lệnh này in ra số lượng tiến trình và số CPU minutes. Nếu bạn thấy sự gia tăng liên tục của những con số dưới thì bạn nên kiểm tra lại hệ thống ngay xem chuyện gì đang xảy ra

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

In ra dữ liệu được sắp xếp theo phần trăm

Câu lệnh sa -c in ra những tiến trình chiếm % tài nguyên nhiều nhất theo từng users

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

Liệt kê các câu lệnh từng được thực thi bởi người dùng

Câu lệnh lastcomm sử dụng để tìm kiếm những câu lệnh từng được thực thi bởi một người dùng cụ thể. Ví dụ câu lệnh dưới đây để kiểm tra những câu lệnh đã được thực thi bởi người dùng cloudzone

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

Liệt kê lịch sử thực thi một câu lệnh cụ thể

Với câu lệnh lastcomm + câu lệnh cần kiểm tra. Bạn có thể kiểm tra rằng câu lệnh đó đã được thực thi như thế nào, bởi user nào, vào thời gian nào

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

 

Trả lời

Email của bạn sẽ không được hiển thị công khai.