Hướng dẫn lệnh pmap Linux cho người mới bắt đầu (5 ví dụ)

theanh

Administrator
Nhân viên
Dòng lệnh Linux cung cấp nhiều công cụ giúp bạn biết thêm về các tiến trình hiện đang hoạt động trong hệ thống của bạn. Một trong những tiện ích như vậy là pmap, báo cáo bản đồ bộ nhớ của tiến trình. Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của pmap bằng một số ví dụ dễ hiểu.

Nhưng trước khi làm điều đó, cần đề cập rằng tất cả các ví dụ ở đây đã được thử nghiệm trên máy Ubuntu 22.04 LTS.


Lệnh pmap Linux​

Lệnh pmap trong Linux cho phép bạn xem bản đồ bộ nhớ của một hoặc nhiều tiến trình. Sau đây là cú pháp của lệnh này:
Mã:
pmap [options] pid [...]
Và đây là cách trang hướng dẫn của công cụ giải thích lệnh này:
Mã:
Lệnh pmap báo cáo bản đồ bộ nhớ của một hoặc nhiều quy trình.
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh pmap hoạt động.

Câu hỏi 1. Làm thế nào để sử dụng pmap?​

Cách sử dụng cơ bản rất đơn giản. Chỉ cần thực hiện lệnh 'pmap' mà không cần bất kỳ tùy chọn nào. Tất nhiên, bạn cần truyền một PID quy trình làm đầu vào.

Ví dụ, tôi sử dụng pmap theo cách sau:
Mã:
pmap 5146
Và đây là một phần đầu ra được tạo ra:
Mã:
5146: gedit
000055bde4835000 8K r-x-- gedit
000055bde4a36000 4K r---- gedit
000055bde4a37000 4K rw--- gedit
000055bde5d32000 13944K rw--- [ ẩn danh ]
00007fc910000000 132K rw--- [ ẩn danh ]
00007fc910021000 65404K ----- [ ẩn danh ]
00007fc918000000 896K rw--- [ ẩn danh ]
00007fc9180e0000 64640K ----- [ ẩn danh ]
00007fc91c750000 204K r---- UbuntuMono-R.ttf
00007fc91c783000 644K r-x-- libaspell.so.15.2.0
00007fc91c824000 2048K ----- libaspell.so.15.2.0
00007fc91ca24000 20K r---- libaspell.so.15.2.0
00007fc91ca29000 4K rw--- libaspell.so.15.2.0
00007fc91ca2a000 8K r-x-- libenchant_aspell.so
00007fc91ca2c000 2044K ----- libenchant_aspell.so
00007fc91cc2b000 4K r---- libenchant_aspell.so
00007fc91cc2c000 4K rw--- libenchant_aspell.so
00007fc91cc2d000 44K r-x-- libenchant_hspell.so
00007fc91cc38000 2044K ----- libenchant_hspell.so
00007fc91ce37000 4K r---- libenchant_hspell.so
00007fc91ce38000 12K rw--- libenchant_hspell.so
00007fc91ce3b000 428K r-x-- libhunspell-1.6.so.0.0.1
00007fc91cea6000 2044K ----- libhunspell-1.6.so.0.0.1
00007fc91d0a5000 4K r---- libhunspell-1.6.so.0.0.1
00007fc91d0a6000 16K rw--- libhunspell-1.6.so.0.0.1
00007fc91d0aa000 16K r-x-- libenchant_myspell.so
00007fc91d0ae000 2048K ----- libenchant_myspell.so
00007fc91d2ae000 4K r---- libenchant_myspell.so
...
...
...
Vậy là xong, đầu ra đầu tiên hiển thị cho bạn tên của quy trình và sau đó theo sau là bản đồ bộ nhớ.

Câu hỏi 2. Làm thế nào để pmap hiển thị đầu ra mở rộng?​

Để pmap hiển thị đầu ra ở định dạng mở rộng, hãy sử dụng tùy chọn dòng lệnh -x. Ví dụ:
Mã:
pmap -x 5146
Sau đây là một phần của đầu ra được tạo ra:
Mã:
5146: gedit
Địa chỉ Kbyte RSS Dirty Mode Mapping
000055bde4835000 8 4 0 r-x-- gedit
000055bde4835000 0 0 0 r-x-- gedit
000055bde4a36000 4 4 4 r---- gedit
000055bde4a36000 0 0 0 r---- gedit
000055bde4a37000 4 4 4 rw--- gedit
000055bde4a37000 0 0 0 rw--- gedit
000055bde5d32000 13944 13692 13692 rw--- [ ẩn danh ]
000055bde5d32000 0 0 rw--- [ ẩn danh ]
00007fc910000000 132 44 44 rw--- [ ẩn danh ]
00007fc910000000 0 0 rw--- [ ẩn danh ]
00007fc910021000 65404 0 0 ----- [ ẩn danh ]
00007fc910021000 0 0 0 ----- [ ẩn danh ]
00007fc918000000 896 896 896 rw--- [ ẩn danh ]
00007fc918000000 0 0 rw--- [ ẩn danh ]
00007fc9180e0000 64640 0 0 ----- [ ẩn danh ]
00007fc9180e0000 0 0 0 ----- [ ẩn danh ]
00007fc91c750000 204 136 0 r---- UbuntuMono-R.ttf
00007fc91c750000 0 0 0 r---- UbuntuMono-R.ttf
00007fc91c783000 644 472 0 r-x-- libaspell.so.15.2.0
00007fc91c783000 0 0 0 r-x-- libaspell.so.15.2.0
00007fc91c824000 2048 0 0 ----- libaspell.so.15.2.0
00007fc91c824000 0 0 0 ----- libaspell.so.15.2.0
00007fc91ca24000 20 20 20 r---- libaspell.so.15.2.0
00007fc91ca24000 0 0 0 r---- libaspell.so.15.2.0
00007fc91ca29000 4 4 4 rw--- libaspell.so.15.2.0
00007fc91ca29000 0 0 0 rw--- libaspell.so.15.2.0
00007fc91ca2a000 8 8 0 r-x-- libenchant_aspell.so
00007fc91ca2a000 0 0 0 r-x-- libenchant_aspell.so
00007fc91ca2c000 2044 0 0 ----- libenchant_aspell.so
00007fc91ca2c000 0 0 0 ----- libenchant_aspell.so
00007fc91cc2b000 4 4 4 r---- libenchant_aspell.so
00007fc91cc2b000 0 0 0 r---- libenchant_aspell.so
...
...
...
Lưu ý rằng nếu bạn cần nhiều thông tin chi tiết hơn, bạn có thể sử dụng tùy chọn dòng lệnh -X.

Câu hỏi 3. Làm thế nào để pmap hiển thị định dạng thiết bị trong đầu ra?​

Điều này có thể được thực hiện bằng cách sử dụng tùy chọn dòng lệnh -d. Ví dụ:
Mã:
pmap -d 5146
Và đây là một phần đầu ra được tạo ra:
Mã:
5146: gedit
Địa chỉ Kbyte Chế độ Bù trừ Ánh xạ thiết bị
000055bde4835000 8 r-x-- 0000000000000000 008:00008 gedit
000055bde4a36000 4 r---- 0000000000001000 008:00008 gedit
000055bde4a37000 4 rw--- 0000000000002000 008:00008 gedit
000055bde5d32000 13944 rw--- 0000000000000000 000:00000 [ ẩn danh ]
00007fc910000000 132 rw--- 0000000000000000 000:00000 [ ẩn danh ]
00007fc910021000 65404 ----- 000000000000000 000:00000 [ ẩn danh ]
00007fc918000000 896 rw--- 000000000000000 000:00000 [ ẩn danh ]
00007fc9180e0000 64640 ----- 0000000000000000 000:00000 [ ẩn danh ]
00007fc91c750000 204 r---- 0000000000000000 008:00008 UbuntuMono-R.ttf
00007fc91c783000 644 r-x-- 0000000000000000 008:00008 libaspell.so.15.2.0
00007fc91c824000 2048 ----- 00000000000a1000 008:00008 libaspell.so.15.2.0
00007fc91ca24000 20 r---- 00000000000a1000 008:00008 libaspell.so.15.2.0
00007fc91ca29000 4 rw--- 00000000000a6000 008:00008 libaspell.so.15.2.0
00007fc91ca2a000 8 r-x-- 000000000000000 008:00008 libenchant_aspell.so
00007fc91ca2c000 2044 ----- 0000000000002000 008:00008 libenchant_aspell.so
00007fc91cc2b000 4 r---- 0000000000001000 008:00008 libenchant_aspell.so
00007fc91cc2c000 4 r---- 0000000000002000 008:00008 libenchant_aspell.so
00007fc91cc2d000 44 r-x-- 0000000000000000 008:00008 libenchant_hspell.so
00007fc91cc38000 2044 ----- 000000000000b000 008:00008 libenchant_hspell.so
00007fc91ce37000 4 r---- 000000000000a000 008:00008 libenchant_hspell.so
00007fc91ce38000 12 rw--- 0000000000000b000 008:00008 libenchant_hspell.so
...
...
...
Vì vậy, bạn có thể thấy một cột mới 'thiết bị' đã được thêm vào đầu ra.

Câu hỏi 4. Làm thế nào để xóa đầu ra pmap khỏi tiêu đề và chân trang?​

Nếu bạn không muốn thấy những thứ như tên cột trong đầu ra pmap, bạn có thể sử dụng tùy chọn dòng lệnh -q.

Ví dụ:
Mã:
pmap -q -d 5146
Sau đây là đầu ra:
Mã:
5146: gedit
000055bde4835000 8 r-x-- 0000000000000000 008:00008 gedit
000055bde4a36000 4 r---- 0000000000001000 008:00008 gedit
000055bde4a37000 4 rw--- 0000000000002000 008:00008 gedit
000055bde5d32000 13944 rw--- 0000000000000000 000:00000 [ ẩn danh ]
00007fc910000000 132 rw--- 0000000000000000 000:00000 [ ẩn danh ]
00007fc910021000 65404 ----- 000000000000000 000:00000 [ ẩn danh ]
00007fc918000000 896 rw--- 0000000000000000 000:00000 [ ẩn danh ]
00007fc9180e0000 64640 ----- 000000000000000 000:00000 [ ẩn danh ]
00007fc91c750000 204 r---- 0000000000000000 008:00008 UbuntuMono-R.ttf
00007fc91c783000 644 r-x-- 0000000000000000 008:00008 libaspell.so.15.2.0
00007fc91c824000 2048 ----- 00000000000a1000 008:00008 libaspell.so.15.2.0
00007fc91ca24000 20 r---- 00000000000a1000 008:00008 libaspell.so.15.2.0
00007fc91ca29000 4 rw--- 00000000000a6000 008:00008 libaspell.so.15.2.0
00007fc91ca2a000 8 r-x-- 0000000000000000 008:00008 libenchant_aspell.so
00007fc91ca2c000 2044 ----- 0000000000002000 008:00008 libenchant_aspell.so
00007fc91cc2b000 4 r---- 0000000000001000 008:00008 libenchant_aspell.so
00007fc91cc2c000 4 rw--- 0000000000002000 008:00008 libenchant_aspell.so
00007fc91cc2d000 44 r-x-- 0000000000000000 008:00008 libenchant_hspell.so
00007fc91cc38000 2044 ----- 000000000000b000 008:00008 libenchant_hspell.so
00007fc91ce37000 4 r---- 000000000000a000 008:00008 libenchant_hspell.so
00007fc91ce38000 12 rw--- 000000000000b000 008:00008 libenchant_hspell.so
Vì vậy, bạn có thể thấy tiêu đề đã bị xóa khỏi đầu ra.

Câu hỏi 5. Làm thế nào để pmap hiển thị đường dẫn đầy đủ trong đầu ra?​

Trong trường hợp bạn muốn pmap hiển thị đường dẫn đầy đủ đến các tệp trong cột ánh xạ, bạn có thể sử dụng tùy chọn dòng lệnh -p.

Ví dụ:
Mã:
pmap -p 5146
Và đây là đầu ra được tạo ra bởi lệnh này:
Mã:
5146: gedit
000055bde4835000 8K r-x-- /usr/bin/gedit
000055bde4a36000 4K r---- /usr/bin/gedit
000055bde4a37000 4K rw--- /usr/bin/gedit
000055bde5d32000 13944K rw--- [ ẩn danh ]
00007fc91000000 132K rw--- [ ẩn danh ]
00007fc910021000 65404K ----- [ ẩn danh ]
00007fc918000000 896K rw--- [ ẩn danh ]
00007fc9180e0000 64640K ----- [ ẩn danh ]
00007fc91c750000 204K r---- /usr/share/fonts/truetype/ubuntu/UbuntuMono-R.ttf
00007fc91c783000 644K r-x-- /usr/lib/x86_64-linux-gnu/libaspell.so.15.2.0
00007fc91c824000 2048K ----- /usr/lib/x86_64-linux-gnu/libaspell.so.15.2.0
00007fc91ca24000 20K r---- /usr/lib/x86_64-linux-gnu/libaspell.so.15.2.0
00007fc91ca29000 4K rw--- /usr/lib/x86_64-linux-gnu/libaspell.so.15.2.0
00007fc91ca2a000 8K r-x-- /usr/lib/x86_64-linux-gnu/enchant/libenchant_aspell.so
00007fc91ca2c000 2044K ----- /usr/lib/x86_64-linux-gnu/enchant/libenchant_aspell.so
00007fc91cc2b000 4K r---- /usr/lib/x86_64-linux-gnu/Enchant/libaunt_aspell.so
00007fc91cc2c000 4K rw--- /usr/lib/x86_64-linux-gnu/Enchant/libaunt_aspell.so
00007fc91cc2d000 44K r-x-- /usr/lib/x86_64-linux-gnu/Enchant/libaunt_hspell.so
00007fc91cc38000 2044K ----- /usr/lib/x86_64-linux-gnu/Enchant/libaunt_hspell.so
00007fc91ce37000 4K r---- /usr/lib/x86_64-linux-gnu/enchant/libenchant_hspell.so
00007fc91ce38000 12K rw--- /usr/lib/x86_64-linux-gnu/enchant/libenchant_hspell.so
00007fc91ce3b000 428K r-x-- /usr/lib/x86_64-linux-gnu/libhunspell-1.6.so.0.0.1
00007fc91cea6000 2044K ----- /usr/lib/x86_64-linux-gnu/libhunspell-1.6.so.0.0.1
00007fc91d0a5000 4K r---- /usr/lib/x86_64-linux-gnu/libhunspell-1.6.so.0.0.1
00007fc91d0a6000 16K rw--- /usr/lib/x86_64-linux-gnu/libhunspell-1.6.so.0.0.1
00007fc91d0aa000 16K r-x-- /usr/lib/x86_64-linux-gnu/enchant/libenchant_myspell.so
00007fc91d0ae000 2048K ----- /usr/lib/x86_64-linux-gnu/enchant/libenchant_myspell.so
00007fc91d2ae000 4K r---- /usr/lib/x86_64-linux-gnu/enchant/libenchant_myspell.so
00007fc91d2af000 4K rw--- /usr/lib/x86_64-linux-gnu/enchant/libenchant_myspell.so
00007fc91d2b0000 44K r-x-- /usr/lib/x86_64-linux-gnu/enchant/libenchant_ispell.so
00007fc91d2bb000 2048K ----- /usr/lib/x86_64-linux-gnu/enchant/libenchant_ispell.so
Vì vậy, bạn có thể thấy rằng tên tệp có đường dẫn đầy đủ được tạo ra trong đầu ra.

Kết luận​

Nếu công việc của bạn liên quan đến việc xử lý bản đồ bộ nhớ quy trình, thì công cụ này dành cho bạn. Trong hướng dẫn này, chúng tôi đã mô tả cách sử dụng cơ bản của lệnh này. Sau khi bạn thực hành xong tất cả những gì chúng tôi đã thảo luận ở đây, hãy đến trang hướng dẫn của công cụ để tìm hiểu thêm về nó.
 
Back
Bên trên