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.
Và đây là cách trang hướng dẫn của công cụ giải thích lệnh này:
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.
Ví dụ, tôi sử dụng pmap theo cách sau:
Và đây là một phần đầu ra được tạo ra:
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ớ.
Sau đây là một phần của đầu ra được tạo ra:
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.
Và đây là một phần đầu ra được tạo ra:
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.
Ví dụ:
Sau đây là đầu ra:
Vì vậy, bạn có thể thấy tiêu đề đã bị xóa khỏi đầu ra.
Ví dụ:
Và đây là đầu ra được tạo ra bởi lệnh này:
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.
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 [...]
Mã:
Lệnh pmap báo cáo bản đồ bộ nhớ của một hoặc nhiều quy trình.
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
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
...
...
...
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
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
...
...
...
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
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
...
...
...
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
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
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
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