Hướng dẫn sử dụng lệnh Linux mkfifo cho người mới bắt đầu (có ví dụ)

theanh

Administrator
Nhân viên
Ngay cả khi bạn là người dùng dòng lệnh Linux ở mức trung bình, bạn hẳn phải biết đến các đường ống, một tính năng cơ bản của dòng lệnh cho phép các tiến trình giao tiếp. Sau đó, có một khái niệm về các đường ống được đặt tên (vâng, các đường ống có tên, để bạn có thể làm nhiều hơn với các đường ống). Lệnh mkfifo cho phép bạn tạo các đường ống được đặt tên như vậy.

Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của mkfifo bằng một số ví dụ dễ hiểu. Nhưng trước khi làm điều đó, chúng ta nên đề cập rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên Ubuntu 22.04 LTS.


Lệnh mkfifo trên Linux​

Về cơ bản, lệnh mkfifo cho phép bạn tạo FIFO (hay còn gọi là named pipe). Sau đây là cú pháp của lệnh:
Mã:
mkfifo [OPTION]... NAME...
Và đây là cách trang hướng dẫn của công cụ giải thích về lệnh này:
Mã:
Tạo named pipe (FIFO) với các NAME đã cho.
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách mkfifo hoạt động.

Câu hỏi 1. Đường ống có tên chính xác là gì?​

Để hiểu điều này, trước tiên bạn cần biết khái niệm về đường ống cơ bản. Bạn đã thấy các lệnh có chứa thanh dọc (|). Thanh này được gọi là đường ống. Chức năng của nó là tạo ra một kênh giao tiếp giữa hai quy trình (khi lệnh hoàn chỉnh được thực thi).

Ví dụ:
Mã:
ls | grep .txt
Lệnh được đề cập ở trên bao gồm hai chương trình: ls và grep. Cả hai chương trình này đều được phân tách bằng đường ống (|). Vậy thì chức năng của đường ống ở đây là tạo ra một kênh giao tiếp giữa các chương trình này - khi lệnh đã đề cập ở trên được thực thi, đầu ra của ls được đưa vào làm đầu vào cho grep. Cuối cùng, đầu ra được hiển thị trên thiết bị đầu cuối chỉ bao gồm các mục có chuỗi '.txt' trong đó.

Vậy là chúng ta đã ôn lại nhanh về đường ống thông thường. Bây giờ đến khái niệm đường ống có tên. Như tên gọi của nó, đây là đường ống có tên. Bạn có thể tạo đường ống có tên bằng lệnh mkfifo. Ví dụ:
Mã:
mkfifo pipe2
Vậy thì 'pipe2' giờ là một đường ống có tên. Bây giờ đến câu hỏi đường ống có tên hữu ích hơn như thế nào? Hãy xem xét trường hợp bạn có một quy trình đang chạy trong một thiết bị đầu cuối và tạo ra đầu ra, và điều bạn muốn là chuyển hướng đầu ra đó sang một thiết bị đầu cuối khác. Vì vậy, ở đây, một đường ống có tên có thể giúp ích rất nhiều.

Ví dụ, giả sử ls là quy trình đang chạy trong thiết bị đầu cuối đầu tiên và bạn muốn xem đầu ra của nó trong một thiết bị đầu cuối khác.. Vì vậy, đây là những gì bạn có thể làm:
Mã:
ls > pipe2
và đây là những gì bạn có thể làm trong thiết bị đầu cuối thứ hai:
Mã:
cat < pipe2

Câu hỏi 2. Làm thế nào để xác định đường ống có tên?​

Đường ống có tên có thể được truy cập bình thường như các tệp. Vì vậy, điều đó có nghĩa là bạn có thể sử dụng lệnh ls để truy cập chúng. Nếu bạn thấy quyền truy cập cho một đường ống được đặt tên, bạn sẽ thấy chữ 'p' ở đầu. Điều này biểu thị tệp đang đề cập là một đường ống được đặt tên. Sau đây là một ví dụ:


Câu hỏi 3. Làm thế nào để thiết lập quyền truy cập tùy chỉnh?​

Như bạn có thể thấy trong phần Hỏi & Đáp trước, quyền truy cập mặc định cho các đường ống được đặt tên là 'rw', 'rw' và 'r' (tương ứng với người dùng, nhóm và những người khác). Tuy nhiên, nếu muốn, bạn cũng có thể thiết lập custompermissions, một việc bạn có thể làm bằng cách sử dụng tùy chọn -m.

Ví dụ:
Mã:
mkfifo pipe3 -m700
Ảnh chụp màn hình sau đây xác nhận các quyền tùy chỉnh đã được thiết lập:



Để biết thêm về mkfifo, bạn có thể sử dụng tùy chọn --help--version.

Kết luận​

Vì vậy, tùy thuộc vào loại công việc bạn làm trên dòng lệnh Linux, lệnh mkfifo có thể rất hữu ích với bạn. Sau khi hoàn tất cách sử dụng cơ bản mà chúng tôi đã thảo luận ở đây, bạn có thể tìm hiểu thêm về công cụ này bằng cách truy cập trang hướng dẫn của công cụ này.
 
Back
Bên trên