Process trong Unix/Linux là gì?Một trong những đặc điểm nổi bật của Unix/Linux là khả năng chạy đồng thời nhiều chương trình. Hệ Điều Hành xem mỗi đơn thể mã lệnh mà nó điều khiển là tiến trình (process). Một chương trình có thể bao gồm nhiều tiến trình kết hợp với nhau. Đối với Hệ Điều Hành, các tiến trình cùng hoạt động chia sẻ tốc độ xử lý của CPU, cùng dùng chung vùng nhớ và tài nguyên hệ thống khác. Các tiến trình được điều phối xoay vòng bởi Hệ Điều Hành. Show Và là một kỹ sư lập trình hệ thống, một system admin hay một DevOps… thì phần lớn thời gian bạn sẽ phải làm việc trên hệ thống Unix/Linux. Để làm việc trên Unix/Linux, chúng ta tương tác với hệ điều hành thông qua các lệnh (command). Mỗi lệnh trên Unix/Linux khi thực thi sẽ run một process hoặc một group các processes. Chính vì vậy, những hiểu về tiến trình và kỹ năng quản lý và sử dụng tiến trình trên hệ thống Unix/Linux là hết sức cần thiết. Trong bài viết này, mình sẽ giới thiệu đến các bạn những kiến thức và kỹ năng cơ bản để quản lý các tiến trình trên hệ thống Unix/Linux nhé ))Các thuật ngữ cơ bản
Mỗi tiến trình có một định danh PID (Process Identify) duy nhất trong toàn bộ hệ thống vào thời điểm tiến trình đang chạy
Mỗi tiến trình đều có một tiến trình cha (parent process) với định danh là PPID (Parent process identify). Các tiến trình con (child process) thường được start bởi tiến trình cha (parent process). Một parents process có thể có nhiều child process nhưng một child process chỉ có một parents process.
Init process là tiến trình đầu tiên được khởi động sau khi bạn lựa chọn hệ điều hành trong boot loader. Trong cây tiến trình, init process là tiến trình cha của các tiến trình khác. Init process có đặc điểm sau: + PID = 1 + Không thể kill init process
Khi một tiến trình dừng chạy, tiến trình đó sẽ chết. Khi bạn muốn muốn 1 tiến trình chết, bạn sẽ phải kill nó đi.
Một daemon process là một tiến trình chạy nền (background). Các tiến trình này được bắt đầu khi khởi động hệ thống và sẽ tiếp tục được chạy mãi.
Zombie thực chất là một phần còn sót lại của một tiến trình đã ngừng hoạt động nhưng chưa được xử lý sạch. Và, đúng vậy, zombie nghĩa là thây ma tức là tiến trình đó đã chết và bạn không thể “kill” nó thêm 1 lần nữa Những chương trình sau khi thoát để lại tiến trình Zombie thì điều đó đồng nghĩa với việc chương trình đó được lập trình không tốt.Quản lý tiến trình trong linux cơ bản
Một số biến môi trường shell chứa thông tin về các tiến trình. Biến
Với lệnh
Các tiến trình có mối quan hệ cha-con. Mọi tiến trình đều có tiến trình cha (parent process). Khi bắt đầu một bash mới, bạn có thể sử dụng echo để xác minh rằng pid trước đó có phải là ppid của shell mới. Tiến trình con từ phía trên bây giờ là tiến trình cha.
Nhập
Một tiến trình bắt đầu một tiến trình khác theo hai giai đoạn. Đầu tiên, tiến trình tạo ra một nhánh (fork) của chính nó, sao y hệt. Sau đó, tiến trình được phân nhánh thực hiện một trình thực thi (exec) để thay thế tiến trình được phân nhánh bằng tiến trình con.
Một trong những công cụ phổ biến nhất trên Linux để xem các tiến trình là ps. Ví dụ sau sẽ cho thấy mối quan hệ cha con giữa ba tiến trình bash.
Trên Linux,
Tương tự như
Bạn cũng có thể liệt kê command name của tiến trình với pgrep
Một công cụ phổ biến và có lẽ rất quen
thuộc đối với người dùng Linux là Các tham số chính cho lệnh top
Ngoài ra, trong khi lệnh top đang chạy, bạn có thể bật và tắt nhiều tính năng, thay đổi hiển thị bằng cách nhấn các phím có liên quan. Còn có nhiều tham số hơn dành cho lệnh top. Bạn có thể đọc thêm về chúng bằng cách sử dụng command Tạm kếtTrên đây, mình vừa chia sẻ những kỹ năng cơ bản, những command thường được sử dụng để quản lý các process trên hệ điều hành Unix/Linux. Ở phần tiếp theo, mình sẽ cùng với các bạn tiếp tục tìm về giao tiếp giữa các tiến trình trên Linux. Mong các bạn hãy tiếp tục theo dõi, góp ý và ủng hộ mình nhé! |