Trang chủ » làm thế nào để » Không có gì là tất cả mọi thứ là một tập tin có nghĩa là trong Linux?

    Không có gì là tất cả mọi thứ là một tập tin có nghĩa là trong Linux?

    Một trong những tính năng xác định của Linux và các hệ điều hành tương tự UNIX khác là mọi thứ đều là một tập tin. Đây là một sự đơn giản hóa, nhưng hiểu ý nghĩa của nó sẽ giúp bạn hiểu cách Linux hoạt động.

    Nhiều thứ trên Linux xuất hiện trong hệ thống tệp của bạn, nhưng chúng không thực sự là tệp. Chúng là các tệp đặc biệt đại diện cho các thiết bị phần cứng, thông tin hệ thống và những thứ khác - bao gồm trình tạo số ngẫu nhiên.

    Các tệp đặc biệt này có thể được đặt trong các hệ thống tệp giả hoặc ảo như / dev, chứa các tệp đặc biệt đại diện cho các thiết bị và / Proc, chứa các tệp đặc biệt thể hiện thông tin hệ thống và xử lý.

    / Proc

    Ví dụ: giả sử bạn muốn tìm thông tin về CPU của mình. Thư mục / Proc chứa một tệp đặc biệt - / Proc / cpuinfo - có chứa thông tin này.

    Bạn không cần một lệnh đặc biệt cho bạn biết thông tin CPU của bạn - bạn chỉ có thể đọc nội dung của tệp này bằng bất kỳ lệnh tiêu chuẩn nào hoạt động với các tệp văn bản thuần túy. Ví dụ: bạn có thể sử dụng lệnh mèo / Proc / cpuinfo để in nội dung của tệp này đến thiết bị đầu cuối - in thông tin CPU của bạn đến thiết bị đầu cuối. Bạn thậm chí có thể mở / Proc / cpuinfo trong trình soạn thảo văn bản để xem nội dung của nó.

    Hãy nhớ rằng, / Proc / cpuinfo không thực sự là một tệp văn bản chứa thông tin này - nhân Linux và hệ thống tệp Proc đang hiển thị thông tin này cho chúng tôi dưới dạng tệp. Điều này cho phép chúng tôi sử dụng các công cụ quen thuộc để xem và làm việc với thông tin.

    Thư mục / Proc cũng chứa các tệp tương tự khác, ví dụ:

    • / Proc / uptime - Tiếp xúc với thời gian hoạt động của nhân Linux của bạn - nói cách khác, hệ thống của bạn đã hoạt động được bao lâu mà không tắt.
    • / Proc / version - Hiển thị phiên bản kernel Linux của bạn.

    / dev

    Trong thư mục / dev, bạn sẽ tìm thấy các tệp đại diện cho các thiết bị - cũng như các tệp đại diện cho những thứ đặc biệt khác. Ví dụ: / dev / cdrom là ổ đĩa CD-ROM của bạn. / dev / sda đại diện cho ổ cứng đầu tiên của bạn, trong khi / dev / sda1 đại diện cho phân vùng đầu tiên trên ổ cứng đầu tiên của bạn.

    Bạn muốn gắn CD-ROM của bạn? Chạy lệnh mount và chỉ định / dev / cdrom là thiết bị bạn muốn gắn kết. Bạn muốn phân vùng ổ cứng đầu tiên của bạn? Chạy tiện ích phân vùng đĩa và chỉ định / dev / sda là đĩa cứng bạn muốn chỉnh sửa. Bạn muốn định dạng phân vùng đầu tiên trên ổ cứng đầu tiên của bạn? Chạy một lệnh định dạng và bảo nó thành định dạng / dev / sda1.

    Như bạn có thể thấy, việc phơi bày các thiết bị này như một phần của hệ thống tệp có những ưu điểm của nó. Hệ thống tập tin cung cấp một không gian tên kiểu thống nhất, mà tất cả các ứng dụng có thể sử dụng để giải quyết và truy cập các thiết bị.

    / dev / null, / dev / ngẫu nhiên và / dev / zero

    Hệ thống tệp / dev không chỉ chứa các tệp đại diện cho các thiết bị vật lý. Dưới đây là ba trong số các thiết bị đặc biệt đáng chú ý nhất có chứa:

    • / dev / null - Loại bỏ tất cả dữ liệu được ghi vào nó - nghĩ về nó như một thùng rác hoặc lỗ đen. Nếu bạn từng thấy một bình luận yêu cầu bạn gửi khiếu nại đến / dev / null - đó là một cách nói táo bạo để ném chúng vào thùng rác.
    • / dev / Random - Tạo ngẫu nhiên bằng cách sử dụng tiếng ồn môi trường. Đây là một trình tạo số ngẫu nhiên mà bạn có thể khai thác.
    • / dev / zero - Tạo số không - một luồng số không đổi.

    Nếu bạn nghĩ ba cái này là tập tin, bạn sẽ không thấy việc sử dụng chúng. Thay vào đó, hãy nghĩ về chúng như những công cụ.

    Ví dụ, theo mặc định, các lệnh Linux tạo ra các thông báo lỗi và đầu ra khác mà chúng in ra đầu ra tiêu chuẩn, thông thường là thiết bị đầu cuối. Nếu bạn muốn chạy một lệnh và không quan tâm đến đầu ra của nó, bạn có thể chuyển hướng đầu ra đó thành / dev / null. Chuyển hướng đầu ra của lệnh thành / dev / null ngay lập tức loại bỏ nó. Thay vì có mọi lệnh thực hiện chế độ im lặng của riêng mình, bạn có thể sử dụng phương thức này với bất kỳ lệnh nào.

    lệnh> / dev / null

    Nếu bạn muốn có một nguồn ngẫu nhiên - giả sử, để tạo khóa mã hóa, bạn sẽ không cần phải viết trình tạo số ngẫu nhiên của riêng mình - bạn có thể sử dụng / dev / ngẫu nhiên.

    Để xóa nội dung của ổ cứng bằng cách ghi 0 vào nó, bạn không cần một tiện ích đặc biệt dành riêng cho việc không sử dụng ổ đĩa - bạn có thể sử dụng các tiện ích tiêu chuẩn và / dev / zero. Ví dụ: đ lệnh đọc từ một vị trí và ghi vào một vị trí khác. Lệnh sau sẽ đọc các số không từ / dev / zero và ghi chúng trực tiếp vào phân vùng đĩa cứng đầu tiên trên hệ thống của bạn, xóa hoàn toàn nội dung của nó.

    (Cảnh báo: Lệnh này sẽ xóa tất cả dữ liệu trên phân vùng đầu tiên của bạn nếu bạn chạy nó. Chỉ chạy lệnh này nếu bạn muốn hủy dữ liệu.)

    dd if = / dev / zero of = / dev / sda1

    Ở đây chúng tôi đang sử dụng dd với các tệp đặc biệt (/ dev / zero và / dev / sda1), nhưng chúng tôi cũng có thể sử dụng dd để đọc và ghi vào các tệp thực tế. Lệnh tương tự hoạt động cả để thao tác trực tiếp với thiết bị và làm việc với tệp.

    Làm rõ

    Trong thực tế, chính xác hơn khi nói rằng tất cả mọi thứ là một luồng byte, hơn tất cả mọi thứ là một tập tin. Và, mặc dù những thứ này về mặt kỹ thuật không phải là tệp, nhưng chúng có thể truy cập được trong hệ thống tệp - hệ thống tệp là không gian tên phổ quát, nơi mọi thứ đều có thể truy cập được. Bạn muốn truy cập một trình tạo số ngẫu nhiên hoặc đọc trực tiếp từ một thiết bị? Bạn sẽ tìm thấy cả trong hệ thống tập tin; không cần hình thức địa chỉ nào khác.

    Tất nhiên, một số thứ không thực sự là tệp - các quy trình đang chạy trên hệ thống của bạn không phải là một phần của hệ thống tệp. Tất cả mọi thứ là một tập tin không chính xác, nhưng rất nhiều thứ hoạt động như các tập tin.