Một tập tin đặc biệt là gì?

Trong hệ điều hành máy tính, một tệp đặc biệt là một loại tệp có thể được lưu trữ trong một hệ thống tệp. Một tập tin đặc biệt đôi khi cũng được gọi là một tập tin thiết bị .

Mục đích của một tệp đặc biệt là để lộ thiết bị dưới dạng tệp trong hệ thống tệp. Một tệp đặc biệt cung cấp giao diện chung cho các thiết bị phần cứng (và các thiết bị ảo được tạo và sử dụng bởi kernel), bởi vì các công cụ cho tệp I / O có thể được sử dụng để truy cập thiết bị.

Khi dữ liệu có màu đỏ từ hoặc được ghi vào một tệp đặc biệt, thao tác sẽ xảy ra ngay lập tức và không tuân theo các quy tắc hệ thống tệp thông thường.

Trong Linux, có hai loại tệp đặc biệt: chặn tệp đặc biệttệp đặc biệt ký tự .

Một tập tin đặc biệt khối hoạt động như một giao diện trực tiếp đến một thiết bị khối. Thiết bị khối là bất kỳ thiết bị nào thực hiện I / O dữ liệu theo đơn vị khối.

Ví dụ về các tệp đặc biệt khối:

  • / dev / sd xn - phân vùng được gắn của thiết bị lưu trữ vật lý. Chữ x đề cập đến một thiết bị vật lý và số n đề cập đến một phân vùng trên thiết bị đó. Chẳng hạn, / dev / sda1 thường là phân vùng đầu tiên trên thiết bị lưu trữ vật lý đầu tiên.
  • / dev / loop n - thiết bị lặp. Đây là những thiết bị đặc biệt cho phép một tệp trong hệ thống tệp được sử dụng làm thiết bị khối. Tệp có thể chứa toàn bộ hệ thống tệp của riêng nó và được truy cập như thể nó là một phân vùng được gắn trên thiết bị lưu trữ vật lý. Ví dụ: tệp hình ảnh đĩa ISO có thể được gắn dưới dạng thiết bị lặp.

Nếu bạn muốn biết một khối lớn như thế nào trên hệ thống của bạn, hãy chạy " blockdev --getbsz device " với quyền root, ví dụ:

 sudo blockdev --getbsz / dev / sda1 
 4096 

Trong ví dụ này, kích thước khối là 4096 byte (4 kibibytes).

Nhân vật tập tin đặc biệt

Một tệp đặc biệt của ký tự tương tự như một thiết bị khối, nhưng dữ liệu được ghi một ký tự (tám bit hoặc một byte) tại một thời điểm.

Ví dụ về các tệp đặc biệt của nhân vật:

  • / dev / stdin (Đầu vào tiêu chuẩn.)
  • / dev / stdout (Sản lượng tiêu chuẩn.)
  • / dev / stderr (Lỗi tiêu chuẩn.)
  • / dev / ngẫu nhiên (PRNG có thể trì hoãn trả lại giá trị để có được entropy bổ sung.)
  • / dev / urandom (PRNG luôn trả về giá trị ngay lập tức, bất kể entropy cần thiết.)
  • / dev / null (Thiết bị null. Đọc từ tệp này luôn nhận được byte rỗng; ghi vào tệp này thành công không có gì.)

Các loại tệp Linux

Trong nhân Linux, các loại tệp được khai báo trong tệp tiêu đề sys / stat.h. Tên loại, tên tượng trưng và bitmask cho mỗi loại tệp Linux được liệt kê bên dưới.

Làm thế nào tôi có thể biết nếu một tập tin là đặc biệt?

Kiểm tra khối đặc biệt

Trong bash, lệnh " test -b file " trả về trạng thái thoát là 0 nếu tệp là khối đặc biệt hoặc 1 nếu tệp thuộc loại khác hoặc không tồn tại.

 kiểm tra -b / dev / sda1; tiếng vang $? # kiểm tra khối đặc biệt, trạng thái thoát tiếng vang của kiểm tra 
 0 
 kiểm tra -b / dev / null; tiếng vang $? # tập tin đặc biệt không phải là khối đặc biệt 
 1 

Kiểm tra nhân vật đặc biệt

Để xác định xem một tệp có phải là ký tự đặc biệt hay không, hãy sử dụng " tệp -c thử nghiệm ":

 kiểm tra -c / dev / null; tiếng vang $? 
 0 

Sử dụng stat

Bạn cũng có thể kiểm tra loại tệp với stat :

 stat / dev / sda1 
 Tệp: / dev / sda1 Kích thước: 0 Khối: 0 Khối IO: Khối 4096 tệp đặc biệt Thiết bị: 6h / 6d Nút: 7998 Liên kết: 1 Loại thiết bị: 8.1 Truy cập: (0660 / brw-rw ----) Uid : (0 / root) Gid: (6 / đĩa) Truy cập: 2018-07-08 06: 41: 25.540000000 -0400 Sửa đổi: 2018-07-08 06: 41: 25.540000000 -0400 Thay đổi: 2018-07-08 06: 41: 25.540000000 -0400 Sinh: - 
 stat / dev / ngẫu nhiên 
 Tệp: / dev / Random Kích thước: 0 Khối: 0 Khối IO: 4096 ký tự tệp đặc biệt Thiết bị: 6h / 6d Nút: 6518 Liên kết: 1 Loại thiết bị: 1, 8 Truy cập: (0666 / crw-rw-rw-) Uid: (0 / root) Gid: (0 / root) Truy cập: 2018-07-08 06: 41: 19.676000000 -0400 Sửa đổi: 2018-07-08 06: 41: 19.676000000 -0400 Thay đổi: 2018-07-08 06:41 : 19.676000000 -0400 Sinh: - 

Inode, Điều khoản hệ điều hành, Đầu vào tiêu chuẩn (stdin), Đầu ra tiêu chuẩn (thiết bị xuất chuẩn)