[Linux] 10 ví dụ sử dụng chương trình lệnh “lsof” trên Linux

201

Hướng dẫn sử dụng chương trình lệnh “lsof” trên Linux

Hôm nay mình sẽ chỉ cho các bạn cách sử dụng tool “lsof” trên hệ thống Linux nhằm cung cấp các thông tin cho quá trình debug khá quan trọng.

lsof” hay còn gọi là “list open files“, là một chương trình lệnh dùng để liệt kê thông tin về các file trên hệ thống đang hoặc đã được mở (tiến trình còn hoạt động) bởi các tiến trình. Mà ta biết là trên hệ thống Unix/Linux thì mọi thứ đều là file (pipe, socket, directory, device,..).

Chính vì vậy mà hôm nay mình sẽ hướng dẫn các bạn các mẫu lệnh sử dụng lsof phổ biến để tìm kiếm thông tin về các file đã được mở như thế nào khi debug.


1. Lệnh cơ bản và output giải thích

– Output của lsof có một dòng header từng cột thể hiện các nội dung tương ứng. Dưới đây là vài cái thông tin thường gặp ở các cột này.


Chú thích output của chương trình lệnh

– COMMAND : 9 kí tự đầu tiên của tên chương trình lệnh tương ứng với tiến trình.
– PID : thông tin PID của tiến trình.
– USER : user thực thi tiến trình đó. Có thể là UID hoặc username.
– FD : File Descriptor của file được liệt kê, hoặc các thông tin khác hay mode (w,u,r) của file.
+ cwd : là thư mục đang hoạt động của tiến trình
+ txt : program text (code và data)
+ mmap : memory-mapped file
+ rtd : root directory
+ DEL : Linux map file đã bị xoá.
+ w : đang truy cập ghi xuống dữ liệu
+ u : đang truy cập ghi và đọc dữ liệu
+ r : đang truy cập đọc dữ liệu

– TYPE
:
+ REG : file bình thường
+ sock : socket.
+ ipv4/ipv6 : socket ipv4/v6
+ DIR : thư mục

– DEVICE : số đại diện của thiết bị như partition mà file nằm trên partition đó.

– SIZE/OFF : dung lượng của file.
– NODE : số node của file.
– NAME : tên file.


2. Liệt kê các tiến trình đang mở 1 file

– Bạn có thể liệt kê các tiến trình nào đang mở 1 file cụ thể bằng cách đưa đường dẫn file thành tham số sau lệnh.


3. Liệt kê các file được mở bởi 1 tiến trình

– Để liệt kê các file đã được mở bởi 1 tiến trình có thông tin PID cụ thể thì ta thêm option “-p” và chỉ định rõ thông tin PID của tiến trình đó.


4. Liệt kê các file đã được mở bởi 1 user cụ thể

– Ta chỉ cần chỉ định thêm option “-u” và tên user có tồn tại trên hệ thống.

– Bạn cũng có liệt kê đối với user khác nhưng loại trừ 1 user cụ thể nào đó với tham số “^”.


5. Liệt kê các file đã được mở trong 1 directory

– Với option “+D” thì lsof sẽ tìm cả các thông tin opened-files ở các sub-directory, thư mục con luôn.
– Còn nếu chỉ không muốn tìm cả sub-dir thì chỉ cần xài “+d”.


6. Liệt kê các file đã mở theo tên tiến trình

– Ta dùng option “-c” và chỉ định tên tiến trình.


7. Kill tất cả hoạt động của 1 user cụ thể

– Đôi khi bạn muốn tắt hết tiến trình liên quan đến 1 user. Thì câu lệnh sau sẽ giúp bạn làm điều đó. Option “-t” sẽ liệt kê các thông tin PID và không có các output trả về khác.


8. Liệt kê các tiến trình đang lắng nghe trên port cụ thể

– Bạn cần chú ý option “-i” và tham số “:” cùng số port cụ thể.


9. Liệt kê tất cả kết nối TCP/UDP hay IPv4/v6

– Ta dùng option “-i” để liệt kê tất cả các kết nối của giao thức TCP hay UDP.


– Để hiển thị tất cả các kết nối của hệ thống. Cũng như muốn chỉ định riêng việc liệt kê kết nối từ IPv4 hay v6.


10. Liệt kê tất cả các file network đang được sử dụng bởi 1 tiến trình

– Ta làm theo câu lệnh sau bằng cách kết hợp các option tương ứng


Như vậy là đã xong phần hướng dẫn sử dụng tool “lsof” rồi nhé các bạn.

Đánh giá sao từ người đọc :
[ Tổng : 1 - Trung bình: 5 ]