Cách kiểm tra tệp đang mở trong Linux

How Check Open Files Linux



Bạn có thể đã bắt gặp câu nói, Mọi thứ đều là một tệp trong Linux. Mặc dù điều này không hoàn toàn đúng, nhưng nó có một loạt các sự thật đối với nó.

Trong các hệ thống giống như Linux và Unix, mọi thứ đều giống như một tệp. Điều đó có nghĩa là các tài nguyên trong hệ thống Unix được gán một bộ mô tả tệp, bao gồm thiết bị lưu trữ, ổ cắm mạng, quy trình, v.v.







Bộ mô tả tệp là một số duy nhất xác định tệp và các thiết bị đầu vào / đầu ra khác. Nó mô tả các tài nguyên và cách hạt nhân truy cập chúng. Hãy coi nó như một cổng vào tài nguyên phần cứng trừu tượng Kernel.



Thật không may, khái niệm về bộ mô tả tệp nằm ngoài phạm vi của hướng dẫn này; hãy xem xét liên kết được cung cấp bên dưới để bắt đầu tìm hiểu thêm:



https://en.wikipedia.org/wiki/File_descriptor





Điều đó có nghĩa là Unix và các hệ thống giống Unix như Linux sử dụng nhiều tệp như vậy. Là một người dùng thành thạo Linux, việc nhìn thấy các tệp đang mở và quá trình cũng như người dùng sử dụng chúng là vô cùng hữu ích.

Hướng dẫn này sẽ tập trung vào các cách để xem các tệp đang mở và quy trình hoặc người dùng nào chịu trách nhiệm.



Điều kiện tiên quyết

Trước khi chúng tôi bắt đầu, hãy đảm bảo rằng bạn có:

  • Một hệ thống Linux
  • Người dùng có đặc quyền root hoặc sudo

Nếu bạn có những thứ này, hãy để chúng tôi bắt đầu:

LSOF Utility

Được tạo bởi Victor A Abell, Liệt kê các tệp đang mở, hay gọi tắt là lsof, là một tiện ích dòng lệnh cho phép chúng ta xem các tệp đang mở và các tiến trình hoặc người dùng đã mở chúng.

Tiện ích lsof có sẵn trong các bản phân phối Linux chính; tuy nhiên, bạn có thể thấy nó chưa được cài đặt và do đó có thể cần phải cài đặt theo cách thủ công.

Cách cài đặt lsof trên Debian / Ubuntu

Để cài đặt nó trên Debian, hãy sử dụng lệnh:

sudo apt-get cập nhật

sudo apt-get cài đặtlsof-và

Cách cài đặt trên REHL / CentOS

Để cài đặt trên REHL và CentOS, hãy sử dụng lệnh:

sudocập nhật dnf

sudodnfTải vềlsof

Cách cài đặt trên Arch

Trên Arch, gọi trình quản lý gói bằng lệnh:

sudopacman-Của anh ấy

sudopacman-NSlsof

Cách cài đặt trên Fedora

Trên Fedora, sử dụng lệnh:

sudo cài đặt yumlsof

Sau khi bạn đã cài đặt và cập nhật tiện ích lsof, chúng ta có thể bắt đầu sử dụng nó.

Cách sử dụng lsof cơ bản

Để sử dụng công cụ lsof, hãy nhập lệnh:

sudolsof

Khi bạn thực hiện lệnh trên, lsof sẽ kết xuất rất nhiều thông tin như hình dưới đây:

Kết quả ở trên hiển thị tất cả các tệp được mở bởi các quy trình. Đầu ra có nhiều cột khác nhau, mỗi cột đại diện cho thông tin cụ thể về tệp.

  • Cột COMMAND - hiển thị tên của tiến trình đang sử dụng tệp.
  • PID - hiển thị Mã định danh quá trình của quá trình sử dụng tệp.
  • TID - Hiển thị ID nhiệm vụ (luồng) của tiến trình.
  • TASKCMD - Biểu diễn tên của lệnh tác vụ.
  • NGƯỜI SỬ DỤNG - Chủ nhân của tiến trình.
  • FD - Hiển thị số bộ mô tả tệp. Đây là cách các quy trình sử dụng tệp; các tùy chọn có sẵn trong đầu ra cột này bao gồm:
  • cwd - thư mục làm việc hiện tại.
  • mem - tệp ánh xạ bộ nhớ
  • pd - thư mục mẹ
  • jld - thư mục tù
  • ltx - văn bản thư viện được chia sẻ
  • rtd - thư mục gốc.
  • txt - mã chương trình và dữ liệu
  • tr - tập tin theo dõi hạt nhân.
  • sai lầm - Lỗi thông tin trình mô tả tệp
  • mmp - Thiết bị ánh xạ bộ nhớ.
  • KIỂU - Hiển thị loại nút được liên kết với tệp, chẳng hạn như:
  • Unix - cho ổ cắm miền Unix.
  • CHO BẠN - đại diện cho thư mục
  • ĐĂNG KÝ - đại diện cho tệp thông thường
  • CHR - đại diện cho tệp ký tự đặc biệt.
  • LIÊN KẾT - tệp liên kết tượng trưng
  • BLK - Chặn tệp đặc biệt
  • INET - Ổ cắm tên miền Internet
  • FIFO - một đường ống được đặt tên (tệp First In First Out)
  • ĐƯỜNG ỐNG - đối với đường ống

Và nhiều thứ khác nữa.

  • THIẾT BỊ - Hiển thị số thiết bị được phân tách bằng dấu phẩy theo thứ tự của tệp ký tự đặc biệt, chặn tệp đặc biệt, thông thường, thư mục và NFS.
  • KÍCH THƯỚC / TẮT - hiển thị kích thước của tệp pr tệp offset tính bằng byte.
  • NÚT - hiển thị số nút của tệp cục bộ, loại cho loại giao thức internet, v.v.
  • TÊN - hiển thị tên của điểm gắn kết và fs mà tệp được đặt trên đó.

Ghi chú: Vui lòng tham khảo Hướng dẫn sử dụng lsof để biết thông tin chi tiết về các cột.

Cách hiển thị các quy trình đã mở tệp

Lsof cung cấp cho chúng tôi các tùy chọn giúp chúng tôi lọc đầu ra để chỉ hiển thị các quy trình đã mở một tệp cụ thể.

Ví dụ: để xem tệp đã mở tệp / bin / bash, hãy sử dụng lệnh như sau:

sudolsof//bấu víu

Điều này sẽ cung cấp cho bạn một đầu ra như hình dưới đây:

KÍCH THƯỚC THIẾT BỊ LOẠI FD COMMAND PID NGƯỜI DÙNG/TẮT NODE TÊN

ksmtuned1025root txt REG253,0 1150704 428303 /usr//bấu víu

bấu víu 2968centos txt REG253,0 1150704 428303 /usr//bấu víu

bấu víu 3075centos txt REG253,0 1150704 428303 /usr//bấu víu

Cách hiển thị tệp được mở bởi một người dùng cụ thể

Chúng tôi cũng có thể lọc đầu ra để hiển thị các tệp được mở bởi một người dùng cụ thể. Chúng tôi thực hiện việc này bằng cách sử dụng cờ -u theo sau là tên người dùng là:

sudolsof-uhàng trăm

Điều này sẽ cung cấp cho bạn một đầu ra như hình dưới đây:

Cách hiển thị các tệp được mở bởi một quy trình cụ thể

Giả sử chúng ta muốn xem tất cả các tệp được mở bởi một quá trình cụ thể? Đối với điều này, chúng ta có thể sử dụng PID của quá trình để lọc đầu ra.

Ví dụ: lệnh dưới đây hiển thị các tệp được mở bởi bash.

sudolsof-P 3075

Điều này sẽ chỉ cung cấp cho bạn các tệp được mở bởi systemd như được hiển thị:

Cách hiển thị tệp được mở trong thư mục

Để mở các tệp trong một thư mục cụ thể, chúng ta có thể chuyển tùy chọn + D theo sau là đường dẫn thư mục.

Ví dụ: liệt kê các tệp đang mở trong thư mục / etc.

sudolsof + D/Vân vân

Dưới đây là kết quả cho việc này:

Cách hiển thị kết nối mạng

Vì mọi thứ trong Linux là một tệp, chúng ta có thể lấy các tệp mạng như tệp TCP hoặc kết nối.

Chúng ta có thể sử dụng lệnh:

sudolsof-tôiTCP

Điều này sẽ cung cấp cho bạn các kết nối TCP trong hệ thống.

Bạn cũng có thể lọc theo cổng cụ thể bằng lệnh hiển thị bên dưới:

sudolsof-tôi:22

Điều này sẽ cung cấp cho bạn kết quả như hình dưới đây:

Cách liên tục hiển thị tệp

Lsof cung cấp cho chúng ta một chế độ lặp lại đầu ra sau mỗi vài giây. Điều này cho phép bạn theo dõi các tệp được mở bởi một quá trình hoặc người dùng liên tục.

Tuy nhiên, tùy chọn này yêu cầu bạn kết thúc quá trình theo cách thủ công.

Ví dụ: lệnh bên dưới liên tục theo dõi các tệp được mở trên cổng 22:

sudolsof -r-tôi:22

Như bạn có thể thấy, trong vòng lặp thứ ba, lsof bắt kết nối đã thiết lập với máy chủ trên SSH.

Phần kết luận

Lsof là một tiện ích vô cùng hữu ích. Nó cho phép bạn theo dõi các tệp quan trọng cũng như giám sát người dùng và quá trình mở tệp. Điều này có thể cực kỳ hữu ích khi khắc phục sự cố hoặc tìm kiếm các nỗ lực xấu vào hệ thống.

Như được hiển thị trong hướng dẫn này, sử dụng các ví dụ và phương pháp khác nhau, bạn có thể kết hợp chức năng được cung cấp bởi công cụ lsof để theo dõi tùy chỉnh.

Cảm ơn bạn đã đọc và chia sẻ! Tôi hy vọng bạn đã học được một cái gì đó mới!