Giải thích lệnh lsof của Linux với 12 ví dụ thực tế

Tác giả NetworkEngineer, T.Tư 05, 2022, 10:52:21 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Giải thích lệnh lsof của Linux với 12 ví dụ thực tế


Lsof là từ viết tắt của List of open files hiển thị thông tin chi tiết về tập tin nào được mở trên hệ thống Linux và các tiến trình nào đã mở chúng. Nó được phát triển và hỗ trợ bởi Victor A. Abell.

Bài viết này sẽ giúp bạn hiểu cách sử dụng lệnh lsof cùng với 12 ví dụ thực tế.

1. Tất cả danh sách tập tin đang mở bằng lsof

Để xem danh sách các tập tin đang mở, chỉ cần thực thi lsof và bạn sẽ nhận được kết quả như bên dưới, nơi bạn có thể thấy tiêu đề như lệnh, Pid, ​​User, FD, v.v.

Mã nguồn [Chọn]
$ lsof

Trong ví dụ trên, hầu hết các cột và giá trị của chúng là tự giải thích. Vì vậy, hãy xem FD thực sự là gì, Fd đề cập đến bộ mô tả tập tin và nó chứa các giá trị như:

  • cwd - thư mục làm việc hiện tại
  • rtd - thư mục gốc
  • txt - văn bản
  • mem - tập tin ánh xạ bộ nhớ

2. Mở danh sách tập tin cho người dùng cụ thể

Bạn có thể chỉ định người dùng bằng cách sử dụng tùy chọn -u cho lệnh cho phép bạn liệt kê tất cả các tập tin đang mở cho người dùng đó.

Mã nguồn [Chọn]
$ lsof -u root

3. Liệt kê tập tin mở theo mã tiến trình

Giả sử bạn biết pid của tiến trình cụ thể, bạn có thể tìm kiếm danh sách tập tin đang mở dựa trên pid bằng cách sử dụng tùy chọn -p cùng với lệnh theo dõi bằng giá trị pid. Bạn cần chạy lệnh như được chỉ định trong ví dụ dưới đây.

Mã nguồn [Chọn]
# lsof -p 82

4. Tiến trình chạy trên một cổng cụ thể

Để kiểm tra quá trình nào đã chiếm cổng cụ thể, bạn có thể liệt kê chúng bằng cách sử dụng tùy chọn -i cùng với số cổng tại TCP/UDP. Trong ví dụ sau, hãy tìm quá trình nào đã sử dụng cổng 80.

Mã nguồn [Chọn]
# lsof -i:80

5. Hiển thị danh sách các tập tin mạng cụ thể (IPv4 & IPv6)

Để hiển thị các tập tin đang mở theo loại tập tin mạng, bạn cần chỉ định loại theo sau tùy chọn -i.

Đối với IPv4, bạn cần chạy lệnh như bên dưới.

Mã nguồn [Chọn]
# lsof -i 4

Đối với, IPv6 chạy lệnh,

Mã nguồn [Chọn]
# lsof -i 6

6. Tìm các tiến trình lắng nghe một phạm vi cổng cụ thể

Nếu bạn muốn hiển thị danh sách các tập tin đang mở của phạm vi cổng cụ thể. Bạn cần sử dụng -i theo sau lệnh với một phạm vi cổng cụ thể.

Mã nguồn [Chọn]
# losf -i TCP:1-100

7. Loại trừ người dùng cụ thể khỏi danh sách tập tin đang mở

Bạn có thể loại trừ người dùng khỏi đầu ra bằng cách sử dụng ký tự '^' cho lệnh như được đưa ra trong ví dụ sau.

Mã nguồn [Chọn]
# lsof -i -u^sanju

8. Liệt kê các tiến trình theo đường dẫn thư mục

Để tìm một tiến trình đang chạy trên một thư mục cụ thể, bạn có thể chạy lệnh với tùy chọn + D theo sau đường dẫn cùng với nó. Bạn phải thực hiện lệnh theo cách sau.

Mã nguồn [Chọn]
# lsof +D /home/sanju

9. Hiện thị các kết nối mạng

Tùy chọn User -i cho lệnh để xem danh sách kết nối mạng dựa trên Listening & Established.

Mã nguồn [Chọn]
$ lsof -i

10. Hủy tiến trình cụ thể

Đôi khi một số tiến trình có thể chống lại việc tắt ngay cả khi bạn đóng tiến trình hoặc một số tiến trình không xác định có thể chiếm cổng nơi bạn muốn chạy một chương trình cụ thể. Để buộc tắt tiến trình, bạn có thể sử dụng lệnh lsof vì việc liệt kê tiến trình đang chạy dễ dàng hơn. Vì vậy, bạn cần chạy lệnh theo cách sau.

Mã nguồn [Chọn]
# kill -9 $(lsof -t -i:8080)
11. Liệt kê các tập tin đang mở dựa trên FD (bộ mô tả tập tin)

Bạn có thể lọc các tập tin đang mở dựa trên các loại FD, bạn cần sử dụng tùy chọn -d cùng với loại FD như được đề cập trong ví dụ bên dưới.

Mã nguồn [Chọn]
# lsof -d rtd

12. Liệt kê các tập tin đang mở dựa trên tên tiến trình

Bạn có thể liệt kê các tập tin theo tên tiến trình bằng cách sử dụng tùy chọn -c với lệnh. Chạy lệnh theo những cách sau

# lsof -c nginx


Mình rất biết ơn bạn đã dành thời gian xem qua bài viết này. Mình hy vọng bạn đã có được một số kiến ​​thức về cách sử dụng lệnh lsof. Đây là những điều mà mình thấy hữu ích trong quá trình triển khai ứng dụng và quản trị hệ thống.