Bạn muốn biết mọi lệnh do người dùng thực thi với thời gian sử dụng CPU và bộ nhớ, chương trình xử lý accounting sẽ cho phép ta làm được điều này. Nhờ chương trình này, người quản trị sẽ luôn tìm ra được mọi lệnh thực thi ở bất kỳ thời gian nào. Một số người khá thông minh, loại bỏ file history (như: ~/.bash_history) hòng tránh bị phát hiện. Nhưng bạn vẫn hoàn toàn có thể giám sát tất cả lệnh thực thi của người dùng bằng cách kiểm soát hoạt động người dùng sử dụng chương trình xử lý accounting.
Gói xử lý accounting gồm một số tiện ích giám sát các hoạt động chương trình như ac, lastcomm, accton và sa.
• Câu lệnh "ac" thể hiện lượng thời gian người dùng đăng nhập hệ thống.
• Câu lệnh "lastcomm" cho biết thông tin của các lệnh thực thi trước đó.
• Câu lệnh "accton" bật tắt chương trình xử lý accounting.
• Câu lệnh "sa" tóm tắt thông tin về các lệnh được thực thi trước đó.
Cài đặt gói psacct hoặc acct
Dùng lệnh up2date nếu bạn đang dùng RHEL:
# up2date psacct
Dùng lệnh yum nếu bạn đang dùng nhân Linux CentOS/Fedora:
# yum install psacct
Dùng lệnh apt-get nếu bạn đang dùng Linux Ubuntu / Debian:
$ sudo apt-get install acct OR # apt-get install acct
Khởi động dịch vụ psacct/acct
Mặc định, dịch vụ này khởi động trên Ubuntu / Debian Linux bằng cách tạo ra file "/var/account/pacct". Nhưng ở hệ điều hành Red Hat /Fedora Core/Cent OS, bạn cần tự khởi động "psacct". Gõ hai lệnh sau để tạo file "/var/account/pacct" và khởi động các dịch vụ:
# chkconfig psacct on
# service psacct restart
Nếu bạn đang dùng Suse Linux, tên của dịch vụ là "acct". Gõ các lệnh sau:
# chkconfig acct on
# /etc/init.d/acct start
# /etc/init.d/acct start
Bây giờ chúng ta hãy xem cách khai thác các tiện ích này để giám sát lệnh và thời gian người dùng.
Hiển thị số liệu thời gian kết nối của người dùng
Câu lệnh "ac" đưa ra số liệu thời gian kết nối theo giờ dựa trên các lệnh login/logout. Số lượng tổng cộng cũng được đưa ra. Nếu bạn gõ lệnh "ac" không có bất kỳ tham số nào, nó sẽ đưa ra lượng thời gian kết nối tổng:
[root@server Desktop]# ac
total 113.21
Hiển thị lượng tổng cộng theo từng ngày tốt hơn là chỉ có một kết quả tổng lớn vào thời điểm cuối cùng:
[root@server Desktop]# ac -d
Mar 26 total 0.23
………………
Today total 0.73
Hiển thị thời gian tổng cộng của từng người dùng để thêm vào giá trị "mọi thứ trong một" thông thường:
[root@server Desktop]# ac -p
nv1 0.03
root 113.20
total 113.23
Sử dụng lệnh # man ac để hiểu thêm về các option của ac
[root@server Desktop]# man psacct
Tìm ra thông tin các lệnh người dùng thực thi trước đó
Sử dụng câu lệnh lastcomm để đưa ra thông tin các lệnh người dùng thực thi trước đó. Bạn có thể tìm kiếm lệnh bằng cách sử dụng username (tên người dùng), tty name, hoặc bằng tên của chính câu lệnh.
Sử dụng câu lệnh lastcomm để đưa ra thông tin các lệnh người dùng thực thi trước đó. Bạn có thể tìm kiếm lệnh bằng cách sử dụng username (tên người dùng), tty name, hoặc bằng tên của chính câu lệnh.
Ví dụ hiển thị lệnh do người dùng "root" sử dụng:
[root@server Desktop]# lastcomm root
Thông tin được đưa ra theo từng dòng. Ví dụ với cuối cùng ở hình trên:
sh F root pts/0 0.00 secs Sat Nov 2 10:27
Trong đó:
- Sh: là tên lệnh của chương trình
- F: là các cờ, ghi lại bởi kiểu định tuyến tài khoản hệ thống. Ý nghĩa của các cờ gồm:
o S - câu lệnh thực thi bởi siêu người dùng (người dùng root)
o F - câu lệnh thực thi sau khi rẽ nhánh nhưng sau đó không làm gì nữa.
o D - câu lệnh kết thúc bằng một file lõi chung.
o X - câu lệnh được kết thúc bằng dấu hiệu SIGTERM.
- Root: tên người dùng thực thi chương trình này
- Pts/0: tên mở rộng
- 0.00 secs: là thời gian thực thi chương trình
Tìm kiếm các file log tính toán bằng lệnh:
[root@server Desktop]# lastcomm rm
[root@server Desktop]# lastcomm passwd
Tìm kiếm các file log tính toán bằng tên mở rộng pts/0
[root@server Desktop]# lastcomm pts/0
Tóm tắt thông tin tính toán
Dùng lệnh sa để đưa ra thông tin tóm tắt về các lệnh được thực thi trước đó. Hơn nữa các thông tin này còn ép dữ liệu để đưa vào một file tóm tắt có tên "savacct", gồm thời gian lệnh được gọi và tài nguyên hệ thống được dùng. Thông tin cũng có thể được tóm tắt theo từng người dùng cơ sở. "sa" sẽ ghi thông tin vào một file có tên "usracct".
[root@server Desktop]# sa
Dùng lệnh sa để đưa ra thông tin tóm tắt về các lệnh được thực thi trước đó. Hơn nữa các thông tin này còn ép dữ liệu để đưa vào một file tóm tắt có tên "savacct", gồm thời gian lệnh được gọi và tài nguyên hệ thống được dùng. Thông tin cũng có thể được tóm tắt theo từng người dùng cơ sở. "sa" sẽ ghi thông tin vào một file có tên "usracct".
[root@server Desktop]# sa
Ví dụ với dòng thứ 3 ở hình trên:
3 1.08re 0.01cp 127040k gnome-screensho*
Trong đó:
• 1.08re: "thời gian thực" (theo phút của đồng hồ treo tường).
• 0.01cp: tổng thời gian sử dụng CPU của hệ thống và người dùng (theo phút).
• 127040k: thời gian sử dụng CPU trung bình (theo đơn vị k).
• gnome-screensho*: tên lệnh.
• 0.01cp: tổng thời gian sử dụng CPU của hệ thống và người dùng (theo phút).
• 127040k: thời gian sử dụng CPU trung bình (theo đơn vị k).
• gnome-screensho*: tên lệnh.
Hiển thị thông tin với từng người dùng:
[root@server Desktop]# sa -u
Hiển thị số lượng chương trình và số phút sử dụng CPU ở từng người dùng cơ bản:
[root@server Desktop]# sa –m
230 1.38re 0.03cp 5745k
root 228 1.38re 0.03cp 5411k
apache 1 0.00re 0.00cp 82128k
dbus 1 0.00re 0.00cp 5562k
Tìm ra ai là người đang chiếm lĩnh CPU
Bằng cách nhìn vào thành phần thời gian "re, k, cp/cpu" (xem phần giải thích ở trên), ta có thể tìm ra hoạt động đáng ngờ hoặc tên của người dùng, tên lệnh đang chiếm lĩnh toàn bộ CPU. Thời gian cũng như dung lượng sử dụng CPU (hoặc bộ nhớ) tăng lên tức là có vấn đề xuất hiện.
Hãy lưu ý các lệnh ở trên cũng như các gói ở nhiều hệ điều hành tựa UNIX khác (như Sun Solaris và *BSD chẳng hạn).
Bằng cách nhìn vào thành phần thời gian "re, k, cp/cpu" (xem phần giải thích ở trên), ta có thể tìm ra hoạt động đáng ngờ hoặc tên của người dùng, tên lệnh đang chiếm lĩnh toàn bộ CPU. Thời gian cũng như dung lượng sử dụng CPU (hoặc bộ nhớ) tăng lên tức là có vấn đề xuất hiện.
Hãy lưu ý các lệnh ở trên cũng như các gói ở nhiều hệ điều hành tựa UNIX khác (như Sun Solaris và *BSD chẳng hạn).
0 comments:
Post a Comment