Giám Sát và Lập Lịch Tiến Trình Linux: Từ Top, PS đến Crontab Chuyên Sâu
7 min read

Trong thế giới Linux, việc hiểu và kiểm soát các tiến trình đang chạy cũng như khả năng tự động hóa các tác vụ định kỳ là kỹ năng then chốt để tối ưu hóa hiệu năng, gỡ lỗi và duy trì một hệ thống hoạt động ổn định. Từ việc theo dõi tài nguyên hệ thống theo thời gian thực đến việc lên lịch các công việc quan trọng, Linux cung cấp một bộ công cụ mạnh mẽ mà bất kỳ người dùng hay quản trị viên nào cũng cần nắm vững.
Giám sát tiến trình
Việc giám sát các tiến trình giúp bạn nắm bắt được những gì đang diễn ra bên trong hệ thống, từ đó có thể tối ưu hóa hiệu năng và phát hiện sớm các vấn đề.
Lệnh "top": Theo Dõi Hệ Thống Theo Thời Gian Thực
Lệnh top
là một công cụ giám sát động, hiển thị thông tin về các tiến trình đang chạy và tài nguyên hệ thống theo thời gian thực.
Giải mã các dòng thông tin trong top
:
Dòng đầu tiên:
Thời gian hiện tại của hệ thống (ví dụ:
13:46:11
).Thời gian hệ thống đã hoạt động (uptime, ví dụ:
up 8 min
).Số lượng người dùng đang đăng nhập (ví dụ:
1 user
).Tải trung bình CPU (load average) trong 1, 5, và 15 phút qua.
Dòng thứ hai (Tasks):
Tổng số tiến trình (ví dụ:
23 total
).Số tiến trình đang chạy (
running
).Số tiến trình đang ngủ (
sleeping
).Số tiến trình đã dừng (
stopped
).Số tiến trình "ma" (
zombie
).
Dòng thứ ba (%Cpu(s)):
us
: % CPU sử dụng bởi tiến trình người dùng.sy
: % CPU sử dụng bởi tiến trình hệ thống.ni
: % CPU sử dụng bởi các tiến trình có độ ưu tiên nice thấp.id
: % CPU rảnh rỗi.wa
: % CPU chờ đợi các hoạt động I/O.hi
: % CPU xử lý ngắt phần cứng.si
: % CPU xử lý ngắt phần mềm.st
: % CPU bị "đánh cắp" bởi máy ảo khác (nếu có).
Dòng thứ tư và thứ năm (KiB Mem / KiB Swap): Hiển thị thông tin về RAM và Swap (RAM ảo).
total
: Tổng dung lượng.free
: Dung lượng còn trống.used
: Dung lượng đã sử dụng.buff/cache
: Dung lượng bộ đệm.
Các cột thông tin tiến trình:
PID
: ID của tiến trình.USER
: Người dùng sở hữu tiến trình.PR
: Độ ưu tiên của tiến trình.NI
: Giá trị "nice" (từ -20 đến 19, càng thấp ưu tiên càng cao).VIRT
: Bộ nhớ ảo tiến trình sử dụng.RES
: Bộ nhớ vật lý tiến trình sử dụng.SHR
: Bộ nhớ chia sẻ tiến trình sử dụng.S
: Trạng thái tiến trình (S=sleep, R=running, Z=zombie, I=Idle).%CPU
: % CPU tiến trình sử dụng.%MEM
: % RAM tiến trình sử dụng.TIME+
: Tổng thời gian CPU tiến trình đã sử dụng.COMMAND
: Tên lệnh của tiến trình.
Lệnh "ps": Ảnh Chụp Tức Thời Của Các Tiến Trình
Lệnh ps
(process status) cung cấp một "ảnh chụp" các tiến trình đang chạy tại thời điểm thực thi lệnh, cho phép giám sát chi tiết hơn.
Các tùy chọn phổ biến của ps
:
ps -ef
hoặcps aux
: Hiển thị tất cả các tiến trình đang chạy.UID
: User ID sở hữu tiến trình.PID
: Process ID.PPID
: Parent Process ID (ID của tiến trình cha).C
: % CPU sử dụng (ít chính xác hơntop
).STIME
: Thời gian bắt đầu của tiến trình.TTY
: Terminal mà tiến trình được khởi chạy từ đó.TIME
: Tổng thời gian CPU đã sử dụng.CMD
(hoặcCOMMAND
): Tên lệnh của tiến trình.
ps -e -u Username
: Hiển thị các tiến trình chạy bởi một người dùng cụ thể. (Hình ảnh: Ví dụ lệnh ps -e -u datnt)ps -C process_name
: Lọc kết quả theo tên tiến trình. (Hình ảnh: Ví dụ lệnh ps -C sshd)ps -ef | grep "keyword"
: Tìm kiếm tiến trình theo từ khóa. (Hình ảnh: Ví dụ lệnh ps -ef | grep worker)ps -e -o columnname1,columnname2
: Hiển thị các cột thông tin cụ thể (ví dụ:ps -e -o uid,pid,stime,comm
). (Hình ảnh: Ví dụ lệnh ps -e -o uid,pid,stime,comm)ps -e --forest
: Hiển thị các tiến trình theo dạng cây, thể hiện mối quan hệ cha-con. (Hình ảnh: Ví dụ lệnh ps -e --forest)ps -fp PID
: Lọc kết quả theo Process ID. (Hình ảnh: Ví dụ lệnh ps -fp 1503)ps -p PID -o comm=
: Hiển thị tên tiến trình khi biết PID. (Hình ảnh: Ví dụ lệnh ps -p 1665 -o comm=)ps -C process_name -o pid=
: Hiển thị PID khi biết tên tiến trình. (Hình ảnh: Ví dụ lệnh ps -C systemd -o pid=)
Lập lịch tiến trình với cron
cron
là một daemon (tiến trình chạy nền) cho phép người dùng lập lịch các lệnh hoặc script để chạy tự động theo một khoảng thời gian cố định hoặc vào một thời điểm cụ thể. Nó rất hữu ích cho các tác vụ định kỳ như sao lưu dữ liệu, tạo báo cáo, hoặc kiểm tra hệ thống.
Chỉnh Sửa Crontab
Để thêm hoặc chỉnh sửa các tác vụ cron, sử dụng lệnh
crontab -e
.Khi chạy lần đầu, bạn có thể được yêu cầu chọn một trình soạn thảo văn bản (mặc định thường là nano).
(Hình ảnh: Giao diện lựa chọn trình soạn thảo cho crontab) (Hình ảnh: Giao diện file crontab ban đầu trong nano)
Cú Pháp Crontab
Mỗi dòng trong tệp crontab định nghĩa một tác vụ theo cú pháp: m h dom mon dow command
m
: Phút (0-59)h
: Giờ (0-23)dom
: Ngày trong tháng (1-31)mon
: Tháng (1-12)dow
: Ngày trong tuần (0-7, với 0 và 7 đều là Chủ Nhật)command
: Lệnh hoặc đường dẫn đến script cần thực thi.
Ví dụ: Chạy script /home/pi/
backup.sh
vào lúc 23:30 ngày 25 hàng tháng: 30 23 25 * * /home/pi/
backup.sh
(Hình ảnh: Ví dụ dòng lệnh crontab cho backup.sh)
Từ Khóa Đặc Biệt
Cron cũng hỗ trợ các từ khóa đặc biệt thay cho việc khai báo thời gian chi tiết:
@reboot
: Chạy một lần sau mỗi lần khởi động.@yearly
(hoặc@annually
): Chạy mỗi năm một lần (tương đương0 0 1 1 *
).@monthly
: Chạy mỗi tháng một lần (tương đương0 0 1 * *
).@weekly
: Chạy mỗi tuần một lần (tương đương0 0 * * 0
).@daily
(hoặc@midnight
): Chạy mỗi ngày một lần (tương đương0 0 * * *
).@hourly
: Chạy mỗi giờ một lần (tương đương0 * * * *
).
Các Tùy Chọn Lệnh Crontab
Cú pháp cơ bản: crontab [-u user] [-l | -r | -e] [-i]
-u user
: Chỉ định crontab của người dùng cụ thể. Nếu không có, mặc định là người dùng hiện tại.-l
: Hiển thị các tác vụ cron hiện tại.-r
: Xóa crontab hiện tại.-e
: Chỉnh sửa crontab hiện tại.-i
: Tương tự-r
nhưng yêu cầu xác nhận trước khi xóa.
Một cú pháp khác cho phép tải cấu hình từ một tệp: crontab [-u user] [file]
Điều này hữu ích khi bạn muốn áp dụng một tệp crontab đã được chuẩn bị sẵn.
Thay đổi trình soạn thảo mặc định: Nếu muốn đổi trình soạn thảo mặc định (ví dụ từ nano sang vim) cho phiên làm việc đó, bạn có thể dùng: EDITOR=vim crontab -e
.
Kết luận
Việc thành thạo các công cụ giám sát tiến trình như top
, ps
và khả năng lập lịch tác vụ tự động với cron
là những kỹ năng vô giá đối với bất kỳ ai làm việc thường xuyên với Linux. Chúng không chỉ giúp bạn hiểu rõ hơn về hoạt động bên trong của hệ thống mà còn cho phép bạn tự động hóa các công việc lặp đi lặp lại, tiết kiệm thời gian và đảm bảo hệ thống luôn chạy ở trạng thái tốt nhất.