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).
Theo internet.
Không có nhận xét nào:
Đăng nhận xét