Hướng dẫn cách sử dụng lsof để theo dõi file đang mở trên Linux

Hướng dẫn cách sử dụng lsof để theo dõi file đang mở trên Linux

Chia sẻ kiến thức 05/10/2022

Lệnh lsof liệt kê các tệp đang mở và các kết nối mạng trên Linux. Bài viết dưới đây sẽ hướng dẫn cách bạn có thể sử dụng nó.

Đã bao giờ bạn gặp lỗi khi cố gắng đóng shell của mình hoặc ngắt kết nối (unmount) ổ đĩa chỉ do một hoặc nhiều tệp (file) đang được sử dụng chưa? Hoặc bạn cố gắng chỉnh sửa một file nhưng rồi lại phát hiện nó bị khóa bởi một chương trình khác?

Hoặc bạn đang lo lắng rằng có ai đó, bằng cách nào đó, đã truy cập trái phép vào hệ thống Linux của bạn. Bằng cách sử dụng công cụ có tên lsof, bạn có thể xem file nào đang mở, thậm chí qua kết nối mạng.

 

Lsof là gì?

lsof là một công cụ liệt kê các file đang mở. Nó có sẵn trên một số triển khai Unix, bao gồm cả Linux. Nó hiện được duy trì bởi nhóm lsof-org trên GitHub.

Hướng dẫn cài đặt trên Linux

Khả năng cao là lsof đã được cài đặt sẵn trên hệ thống của bạn. Hãy thử gõ lsof trong công cụ dòng lệnh (command line). Nếu không thấy tiện ích cài đặt trên hệ thống, bạn có thể cài đặt nó thông qua trình quản lý gói của bản phân phối.

Nếu bạn đang sử dụng hệ thống Ubuntu hoặc Debian, hãy gõ:

 
sudo apt install lsof

Nếu bạn dùng bản phân phối Linux dựa trên Arch, gõ:

sudo pacman -S lsof

Nếu bạn dùng các bản phân phối RHEL, Rocky Linux và Oracle Linux:

sudo dnf install lsof

Cách xem các file đang mở trên Linux

Cách sử dụng lsof rất đơn giản. Bạn chỉ có thể gõ nó tại dòng lệnh để xem bất kỳ file nào đang mở thuộc về bạn:

lsof

Tiện ích này có thể liệt kê các quy trình thuộc root là “Quyền bị từ chối” (Permission denied). Để xem tất cả các file được mở bởi tất cả các quy trình trên toàn hệ thống, hãy chạy nó dưới dạng root:

sudo lsof

lsof sẽ hiển thị lệnh, số định dạng quy trình (process identification number, hay PID), người dùng đã gõ nó, bộ mô tả tệp, loại, thiết bị, kích thước, nút và tên đường dẫn tuyệt đối của tệp đang mở.

 

Nếu bạn cố gắng ngắt kết nối một ổ đĩa, chẳng hạn như ổ đĩa quang và gặp lỗi file đang được sử dụng, bạn có thể xem quy trình nào đang sử dụng file và sau đó thoát hoặc hủy quy trình đó.

Để xem bất kỳ ổ cắm internet nào hiện đang được sử dụng trên hệ thống, hãy sử dụng tùy chọn -i :

sudo lsof -i

Bạn có thể phát hiện dấu vết xâm nhập nếu bạn nhận thấy điều gì đó đáng ngờ trên hệ thống của mình, nhưng những kẻ tấn công tinh vi hơn có thể che dấu vết của chúng tốt hơn.

Tùy chọn -r đặt lsof vào chế độ lặp lại, nơi nó sẽ hiển thị kết quả sau một khoảng thời gian nhất định cho đến khi bạn nhấn Ctrl + C. Theo mặc định, nó chạy 15 giây một lần, nhưng bạn có thể thay đổi khoảng thời gian này. Ví dụ: bạn có thể chạy lệnh sau mỗi 10 giây bằng cách gõ:

 
lsof -r 10

Giả sử bạn muốn xem kết nối Internet của mình 5 giây một lần. Bạn có thể làm điều đó với lsof bằng cách gõ:

lsof -i -r 5

Giờ bạn đã có thể theo dõi quy trình Linux nào có file đang mở

Với lsof, bạn có thể theo dõi quá trình nào có file đang mở và khắc phục bất kỳ sự cố nào mà chúng có thể gây ra.

Các file mở chỉ là một khía cạnh của các quy trình Linux. Có nhiều cách để quản lý các tiến trình trên Linux. Rất dễ để bắt đầu, dừng và kiểm tra các quy trình trong Linux để bạn có thể khai thác tối đa hệ thống của mình.

Hy vọng sau bài viết này, bạn đọc đã biết cách sử dụng công cụ lsof để theo dõi file đang mở trên Linux. Nếu có bất kỳ câu hỏi nào, hãy để lại dưới phần bình luận để được giải đáp sớm nhất nhé. 

ĐỌC TIẾP: Cách chạy nhiều lệnh Linux cùng một lúc 

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/lsof-command-in-linux/

 
 
ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
FUNiX V2 GenAI Chatbot ×

yêu cầu gọi lại