Linux là hệ điều hành đa nhiệm có số lượng người dùng rất lớn, do đó cho phép các tiến trình hoạt động đồng thời mà không ảnh hưởng đến nhau. Đối với Linux thì tiến trình rất quan trọng, nó thực thi chương trình với các tác vụ khác nhau trong hệ điều hành.
Linux cung cấp lệnh ps giúp kiểm tra các tiến trình đang hoạt động với PID của nó qua các tùy chọn khác. Nó giúp đọc thông tin tiến trình trong các tệp ảo, proc tệp hệ thống hay proc tệp ảo,… Đó cũng là nguyên nhân khiến nó có tên là hệ thống tệp ảo.
Trong bài viết này BKHOST sẽ cùng bạn tìm hiểu về các lệnh ps trong Linux.
Ps cung cấp cho người dùng rất nhiều tùy chọn với cú pháp như sau:
- ps [options]
Sử dụng lệnh ps qua ví dụ
Các tùy chọn lệnh ps với tiến trình
1. Lựa chọn tiến trình đơn giản: Hiển thị tiến trình hiện tại của trình shell
{{EJS0}}
Trong đó:
- PID – là id của tiến trình
- TTY – là loại terminal của người dùng
- TIME – thời gian CPU chạy theo giờ và phút
- CMD – tên lệnh khởi chạy tiến trình.
Lưu ý: Khi chạy lệnh ps đôi khi bạn thấy thông tin TIME trả về là 00:00:00, điều đó có nghĩa là ở thời điểm hiện tại bên trong không có thời gian CPU nào được tích lũy, do bash làm tiến trình mẹ cho các tiến trình khác được thực thi và nó không sử dụng bất kỳ thời gian nào của CPU.
2. Xem các tiến trình: Sử dụng tùy chọn sau của ps để xem các tiến trình đang chạy
{{EJS1}}
3. Xem các tiến trình không được liên kết với terminal: Dùng tùy chọn sau để xem các tiến trình không liên kết với terminal và dẫn đầu phiên:
{{EJS2}}
Lưu ý: Bạn có thể hiểu session leader là một phiên duy nhất được dùng cho mọi nhóm tiến trình, nó khởi động tất cả các quá trình khác. process ID của phiên đầu tiên sẽ tương tự như ID của phiên.
4. Xem tất cả các tiến trình ngoại trừ session leaders:
{{EJS3}}
5. Xem tất cả các tiến trình ngoại trừ những tiến trình đáp ứng các điều kiện được chỉ định:
Ví dụ – Bạn chỉ muốn xem trình session leader và các tiến trình không được liên kết với terminal, dùng lệnh sau:
{{EJS4}}
6. Xem tất cả các tiến trình được liên kết với terminal:
{{EJS5}}
7. Xem tất cả các tiến trình đang chạy:
{{EJS6}}
8. Xem tất cả các tiến trình do bạn sở hữu: Là các tiến trình mà người thực thi lệnh ps là root.
{{EJS7}}
Xử lý lựa chọn theo danh sách
Ở đây chúng ta sẽ thảo luận về cách lấy danh sách các tiến trình cụ thể với sự trợ giúp của lệnh ps. Các tùy chọn này chấp nhận một đối số dưới dạng danh sách được phân tách bằng dấu cách hoặc được phân tách bằng dấu phẩy. Chúng có thể được sử dụng nhiều lần.
Ví dụ: ps -p “1 2” -p 3,4
1. Chọn tiến trình bằng tên lệnh: Lệnh này giúp liệt kê các tiến trình có tên trong cmdlist. Khi dùng lệnh này bạn có thể không biết id của tiến trình, tuy nhiên việc tìm kiếm cũng khá dễ dàng.
Cú pháp: ps -C command_name
Ví dụ :
{{EJS8}}
2. Chọn theo ID hoặc tên nhóm: Lệnh này dùng ID để xác định nhóm người dùng tạo tiến trình.
Cú pháp:
{{EJS9}}
Ví dụ :
{{EJS10}}
3. Xem theo id nhóm
Cú pháp:
{{EJS11}}
Ví dụ:
{{EJS12}}
4. Xem tiến trình theo ID tiến trình.
Cú pháp:
{{EJS13}}
Ví dụ:
{{EJS14}}
Để xem nhiều tiến trình, bạn có thể chỉ định nhiều ID cùng lúc và phân tách nó bằng dấu cách hoặc dấu phẩy.
Ví dụ:
{{EJS15}}
Câu lệnh trên đã dùng 3 ID tiến trình là 1, 904 và 27223 phân tách bằng dấu cách.
Bạn có thể xem các tiến trình được sở hữu bởi tiến trình mẹ bằng cách chỉ định ID của tiến trình mẹ trong câu lệnh sau:
{{EJS16}}
Ví dụ trên cho thấy tiến trình mẹ là NetworkManager có ID 766 và tiến trình được sở hữu là dhclient có ID là 19805.
5. Xem tất cả các tiến trình thuộc về bất kỳ ID phiên nào.
Cú pháp:
{{EJS17}}
Thí dụ:
{{EJS18}}
6. Chọn theo tty: Này liệt kê các tiến trình liên kết với tty:
Cú pháp:
{{EJS19}}
Ví dụ :
{{EJS20}}
7. Chọn theo tên hoặc ID người dùng hiệu quả
Cú pháp:
{{EJS21}}
8. Sử dụng -f
để xem danh sách định dạng đầy đủ
{{EJS22}}
9. Sử dụng -F
để xem định dạng bổ sung đầy đủ
{{EJS23}}
10. Xem quá trình theo định dạng do người dùng xác định
Cú pháp:
{{EJS24}}
Ví dụ:
{{EJS25}}
Các đối số cmd
, pid
, user
, ppid
sẽ tương ứng với lệnh, id tiến trình, tên người dùng và id tiến trình mẹ.
11. Xem định dạng điều khiển công việc BSD
{{EJS26}}
12. Hiển thị định dạng dài BSD
{{EJS27}}
13. Thêm cột dữ liệu bảo mật
{{EJS28}}
14. Xem lệnh với định dạng tín hiệu
{{EJS29}}
15. Hiển thị định dạng hướng người dùng
{{EJS30}}
16. Hiển thị định dạng bộ nhớ ảo
{{EJS31}}
17. Dùng tùy chọn ** e ** để xem môi trường của bất kỳ lệnh nào
{{EJS32}}
18. Xem các tiến trình sử dụng bộ nhớ cao nhất.
{{EJS33}}
19. In một cây tiến trình
{{EJS34}}
20. Liệt kê tất cả các chủ đề cho một tiến trình cụ thể: Dùng -T
hoặc -L
để hiển thị các chuỗi của một quá trình.
{{EJS35}}
Tổng kết về lệnh ps trong Linux
Hy vọng thông qua bài viết này, bạn đã hiểu rõ hơn về lệnh ps trong linux thông qua các ví dụ cụ thể. Nếu bạn còn bất cứ thắc mắc gì về lệnh ps, hãy để lại bình luận ở bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.