何が読み込まれてるのか見るのに便利そう
cat /proc/1/maps
aaaabc350000-aaaabc364000 r-xp 00000000 fd:00 25493439 /usr/lib/systemd/systemd
aaaabc37e000-aaaabc380000 r--p 0001e000 fd:00 25493439 /usr/lib/systemd/systemd
aaaabc380000-aaaabc381000 rw-p 00020000 fd:00 25493439 /usr/lib/systemd/systemd
aaaacd698000-aaaacda01000 rw-p 00000000 00:00 0 [heap]
ffffa8000000-ffffa8021000 rw-p 00000000 00:00 0
ffffa8021000-ffffac000000 ---p 00000000 00:00 0
ffffaeb8c000-ffffaeb9c000 ---p 00000000 00:00 0
ffffaeb9c000-ffffaf39c000 rw-p 00000000 00:00 0
ffffaf39c000-ffffaf3ac000 ---p 00000000 00:00 0
ffffaf3ac000-ffffafc7e000 rw-p 00000000 00:00 0
ffffafdfe000-ffffafe8d000 r--p 00000000 fd:00 590782 /etc/selinux/targeted/contexts/files/file_contexts.bin
ffffafe8d000-ffffafe95000 r-xp 00000000 fd:00 25167399 /usr/lib64/libffi.so.8.1.0
ffffafe95000-ffffafeac000 ---p 00008000 fd:00 25167399 /usr/lib64/libffi.so.8.1.0
ffffafeac000-ffffafead000 r--p 0000f000 fd:00 25167399 /usr/lib64/libffi.so.8.1.0
ffffafead000-ffffafeae000 rw-p 00010000 fd:00 25167399 /usr/lib64/libffi.so.8.1.0
ffffafeae000-ffffafecf000 r-xp 00000000 fd:00 25167377 /usr/lib64/libgpg-error.so.0.32.0
ffffafecf000-ffffafeed000 ---p 00021000 fd:00 25167377 /usr/lib64/libgpg-error.so.0.32.0
ffffafeed000-ffffafeee000 r--p 0002f000 fd:00 25167377 /usr/lib64/libgpg-error.so.0.32.0
ffffafeee000-ffffafeef000 rw-p 00030000 fd:00 25167377 /usr/lib64/libgpg-error.so.0.32.0
ffffafeef000-ffffafef4000 r-xp 00000000 fd:00 25167468 /usr/lib64/libattr.so.1.1.2501
ffffafef4000-ffffaff0e000 ---p 00005000 fd:00 25167468 /usr/lib64/libattr.so.1.1.2501
ffffaff0e000-ffffaff0f000 r--p 0000f000 fd:00 25167468 /usr/lib64/libattr.so.1.1.2501
ffffaff0f000-ffffaff10000 rw-p 00000000 00:00 0
ffffaff10000-ffffaff96000 r-xp 00000000 fd:00 25167405 /usr/lib64/libpcre2-8.so.0.11.0
ffffaff96000-ffffaffaf000 ---p 00086000 fd:00 25167405 /usr/lib64/libpcre2-8.so.0.11.0
ffffaffaf000-ffffaffb0000 r--p 0008f000 fd:00 25167405 /usr/lib64/libpcre2-8.so.0.11.0
ffffaffb0000-ffffaffb1000 rw-p 00090000 fd:00 25167405 /usr/lib64/libpcre2-8.so.0.11.0
ffffaffb1000-ffffb0033000 r-xp 00000000 fd:00 25725032 /usr/lib64/libm.so.6
ffffb0033000-ffffb0050000 ---p 00082000 fd:00 25725032 /usr/lib64/libm.so.6
ffffb0050000-ffffb0051000 r--p 0008f000 fd:00 25725032 /usr/lib64/libm.so.6
ffffb0051000-ffffb0052000 rw-p 00090000 fd:00 25725032 /usr/lib64/libm.so.6
ffffb0052000-ffffb01d0000 r-xp 00000000 fd:00 25190792 /usr/lib64/libp11-kit.so.0.3.1
ffffb01d0000-ffffb01e7000 ---p 0017e000 fd:00 25190792 /usr/lib64/libp11-kit.so.0.3.1
ffffb01e7000-ffffb01f2000 r--p 00185000 fd:00 25190792 /usr/lib64/libp11-kit.so.0.3.1
ffffb01f2000-ffffb01ff000 rw-p 00190000 fd:00 25190792 /usr/lib64/libp11-kit.so.0.3.1
ffffb01ff000-ffffb0200000 rw-p 00000000 00:00 0
ffffb0200000-ffffb058a000 r-xp 00000000 fd:00 25416445 /usr/lib64/libcrypto.so.3.0.7
ffffb058a000-ffffb059f000 ---p 0038a000 fd:00 25416445 /usr/lib64/libcrypto.so.3.0.7
ffffb059f000-ffffb05f0000 r--p 0038f000 fd:00 25416445 /usr/lib64/libcrypto.so.3.0.7
ffffb05f0000-ffffb05f3000 rw-p 003e0000 fd:00 25416445 /usr/lib64/libcrypto.so.3.0.7
ffffb05f3000-ffffb05f6000 rw-p 00000000 00:00 0
ffffb05f7000-ffffb060c000 r-xp 00000000 fd:00 25167287 /usr/lib64/libz.so.1.2.11
ffffb060c000-ffffb0626000 ---p 00015000 fd:00 25167287 /usr/lib64/libz.so.1.2.11
ffffb0626000-ffffb0627000 r--p 0001f000 fd:00 25167287 /usr/lib64/libz.so.1.2.11
ffffb0627000-ffffb0628000 rw-p 00000000 00:00 0
ffffb0628000-ffffb062d000 r-xp 00000000 fd:00 25167365 /usr/lib64/libcap-ng.so.0.0.0
ffffb062d000-ffffb0647000 ---p 00005000 fd:00 25167365 /usr/lib64/libcap-ng.so.0.0.0
ffffb0647000-ffffb0648000 r--p 0000f000 fd:00 25167365 /usr/lib64/libcap-ng.so.0.0.0
ffffb0648000-ffffb0649000 rw-p 00000000 00:00 0
ffffb0649000-ffffb0650000 r-xp 00000000 fd:00 25228375 /usr/lib64/libeconf.so.0.4.1
ffffb0650000-ffffb0668000 ---p 00007000 fd:00 25228375 /usr/lib64/libeconf.so.0.4.1
ffffb0668000-ffffb0669000 r--p 0000f000 fd:00 25228375 /usr/lib64/libeconf.so.0.4.1
ffffb0669000-ffffb066a000 rw-p 00000000 00:00 0
ffffb066a000-ffffb0690000 r-xp 00000000 fd:00 25167292 /usr/lib64/liblzma.so.5.2.5
ffffb0690000-ffffb06a9000 ---p 00026000 fd:00 25167292 /usr/lib64/liblzma.so.5.2.5
ffffb06a9000-ffffb06aa000 r--p 0002f000 fd:00 25167292 /usr/lib64/liblzma.so.5.2.5
ffffb06aa000-ffffb06ab000 rw-p 00000000 00:00 0
ffffb06ab000-ffffb075a000 r-xp 00000000 fd:00 25167295 /usr/lib64/libzstd.so.1.5.1
ffffb075a000-ffffb076a000 ---p 000af000 fd:00 25167295 /usr/lib64/libzstd.so.1.5.1
ffffb076a000-ffffb076b000 r--p 000af000 fd:00 25167295 /usr/lib64/libzstd.so.1.5.1
ffffb076b000-ffffb076c000 rw-p 000b0000 fd:00 25167295 /usr/lib64/libzstd.so.1.5.1
ffffb076c000-ffffb078a000 r-xp 00000000 fd:00 25167430 /usr/lib64/liblz4.so.1.9.3
ffffb078a000-ffffb079b000 ---p 0001e000 fd:00 25167430 /usr/lib64/liblz4.so.1.9.3
ffffb079b000-ffffb079c000 r--p 0001f000 fd:00 25167430 /usr/lib64/liblz4.so.1.9.3
ffffb079c000-ffffb079d000 rw-p 00000000 00:00 0
ffffb079d000-ffffb0871000 r-xp 00000000 fd:00 25167448 /usr/lib64/libgcrypt.so.20.4.0
ffffb0871000-ffffb0889000 ---p 000d4000 fd:00 25167448 /usr/lib64/libgcrypt.so.20.4.0
ffffb0889000-ffffb088d000 r--p 000dc000 fd:00 25167448 /usr/lib64/libgcrypt.so.20.4.0
ffffb088d000-ffffb0891000 rw-p 000e0000 fd:00 25167448 /usr/lib64/libgcrypt.so.20.4.0
ffffb0891000-ffffb08bd000 r-xp 00000000 fd:00 25167320 /usr/lib64/libcrypt.so.2.0.0
ffffb08bd000-ffffb08d0000 ---p 0002c000 fd:00 25167320 /usr/lib64/libcrypt.so.2.0.0
ffffb08d0000-ffffb08d1000 r--p 0002f000 fd:00 25167320 /usr/lib64/libcrypt.so.2.0.0
ffffb08d1000-ffffb08da000 rw-p 00000000 00:00 0
ffffb08da000-ffffb08e1000 r-xp 00000000 fd:00 25167304 /usr/lib64/libcap.so.2.48
ffffb08e1000-ffffb08f9000 ---p 00007000 fd:00 25167304 /usr/lib64/libcap.so.2.48
ffffb08f9000-ffffb08fa000 r--p 0000f000 fd:00 25167304 /usr/lib64/libcap.so.2.48
ffffb08fa000-ffffb08fb000 rw-p 00010000 fd:00 25167304 /usr/lib64/libcap.so.2.48
ffffb08fb000-ffffb092d000 r-xp 00000000 fd:00 25425524 /usr/lib64/libblkid.so.1.1.0
ffffb092d000-ffffb0947000 ---p 00032000 fd:00 25425524 /usr/lib64/libblkid.so.1.1.0
ffffb0947000-ffffb094b000 r--p 0003c000 fd:00 25425524 /usr/lib64/libblkid.so.1.1.0
ffffb094b000-ffffb094c000 rw-p 00040000 fd:00 25425524 /usr/lib64/libblkid.so.1.1.0
ffffb094c000-ffffb0953000 r-xp 00000000 fd:00 25167470 /usr/lib64/libacl.so.1.1.2301
ffffb0953000-ffffb096b000 ---p 00007000 fd:00 25167470 /usr/lib64/libacl.so.1.1.2301
ffffb096b000-ffffb096c000 r--p 0000f000 fd:00 25167470 /usr/lib64/libacl.so.1.1.2301
ffffb096c000-ffffb096d000 rw-p 00000000 00:00 0
ffffb096d000-ffffb09af000 r-xp 00000000 fd:00 25425620 /usr/lib64/libmount.so.1.1.0
ffffb09af000-ffffb09cb000 ---p 00042000 fd:00 25425620 /usr/lib64/libmount.so.1.1.0
ffffb09cb000-ffffb09cd000 r--p 0004e000 fd:00 25425620 /usr/lib64/libmount.so.1.1.0
ffffb09cd000-ffffb09ce000 rw-p 00050000 fd:00 25425620 /usr/lib64/libmount.so.1.1.0
ffffb09ce000-ffffb09f7000 r-xp 00000000 fd:00 25167424 /usr/lib64/libselinux.so.1
ffffb09f7000-ffffb0a0d000 ---p 00029000 fd:00 25167424 /usr/lib64/libselinux.so.1
ffffb0a0d000-ffffb0a0e000 r--p 0002f000 fd:00 25167424 /usr/lib64/libselinux.so.1
ffffb0a0e000-ffffb0a0f000 rw-p 00030000 fd:00 25167424 /usr/lib64/libselinux.so.1
ffffb0a0f000-ffffb0a11000 rw-p 00000000 00:00 0
ffffb0a11000-ffffb0a27000 r-xp 00000000 fd:00 25425526 /usr/lib64/libkmod.so.2.3.6
ffffb0a27000-ffffb0a40000 ---p 00016000 fd:00 25425526 /usr/lib64/libkmod.so.2.3.6
ffffb0a40000-ffffb0a41000 r--p 0001f000 fd:00 25425526 /usr/lib64/libkmod.so.2.3.6
ffffb0a41000-ffffb0a42000 rw-p 00020000 fd:00 25425526 /usr/lib64/libkmod.so.2.3.6
ffffb0a42000-ffffb0bd0000 r-xp 00000000 fd:00 25725030 /usr/lib64/libc.so.6
ffffb0bd0000-ffffb0bee000 ---p 0018e000 fd:00 25725030 /usr/lib64/libc.so.6
ffffb0bee000-ffffb0bf2000 r--p 0019c000 fd:00 25725030 /usr/lib64/libc.so.6
ffffb0bf2000-ffffb0bf4000 rw-p 001a0000 fd:00 25725030 /usr/lib64/libc.so.6
ffffb0bf4000-ffffb0c00000 rw-p 00000000 00:00 0
ffffb0c00000-ffffb0f40000 r-xp 00000000 fd:00 508273 /usr/lib64/systemd/libsystemd-shared-252.so
ffffb0f40000-ffffb0f54000 ---p 00340000 fd:00 508273 /usr/lib64/systemd/libsystemd-shared-252.so
ffffb0f54000-ffffb0f70000 r--p 00344000 fd:00 508273 /usr/lib64/systemd/libsystemd-shared-252.so
ffffb0f70000-ffffb0f73000 rw-p 00360000 fd:00 508273 /usr/lib64/systemd/libsystemd-shared-252.so
ffffb0f73000-ffffb0f74000 rw-p 00000000 00:00 0
ffffb0f92000-ffffb0fb1000 r-xp 00000000 fd:00 25167369 /usr/lib64/libaudit.so.1.0.0
ffffb0fb1000-ffffb0fc1000 ---p 0001f000 fd:00 25167369 /usr/lib64/libaudit.so.1.0.0
ffffb0fc1000-ffffb0fc2000 r--p 0001f000 fd:00 25167369 /usr/lib64/libaudit.so.1.0.0
ffffb0fc2000-ffffb0fc3000 rw-p 00020000 fd:00 25167369 /usr/lib64/libaudit.so.1.0.0
ffffb0fc3000-ffffb0fcf000 rw-p 00000000 00:00 0
ffffb0fcf000-ffffb0fea000 r-xp 00000000 fd:00 25190860 /usr/lib64/libseccomp.so.2.5.2
ffffb0fea000-ffffb0ffe000 ---p 0001b000 fd:00 25190860 /usr/lib64/libseccomp.so.2.5.2
ffffb0ffe000-ffffb0fff000 r--p 0001f000 fd:00 25190860 /usr/lib64/libseccomp.so.2.5.2
ffffb0fff000-ffffb1000000 rw-p 00020000 fd:00 25190860 /usr/lib64/libseccomp.so.2.5.2
ffffb1000000-ffffb118d000 r-xp 00000000 fd:00 508272 /usr/lib64/systemd/libsystemd-core-252.so
ffffb118d000-ffffb119c000 ---p 0018d000 fd:00 508272 /usr/lib64/systemd/libsystemd-core-252.so
ffffb119c000-ffffb1200000 r--p 0018c000 fd:00 508272 /usr/lib64/systemd/libsystemd-core-252.so
ffffb1200000-ffffb1201000 rw-p 001f0000 fd:00 508272 /usr/lib64/systemd/libsystemd-core-252.so
ffffb120b000-ffffb1210000 r--p 00000000 fd:00 609024 /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin
ffffb1210000-ffffb121e000 r-xp 00000000 fd:00 25493231 /usr/lib64/libpam.so.0.85.1
ffffb121e000-ffffb122f000 ---p 0000e000 fd:00 25493231 /usr/lib64/libpam.so.0.85.1
ffffb122f000-ffffb1230000 r--p 0000f000 fd:00 25493231 /usr/lib64/libpam.so.0.85.1
ffffb1230000-ffffb1231000 rw-p 00010000 fd:00 25493231 /usr/lib64/libpam.so.0.85.1
ffffb1231000-ffffb1244000 r-xp 00000000 fd:00 25165961 /usr/lib64/libgcc_s-11-20231218.so.1
ffffb1244000-ffffb1260000 ---p 00013000 fd:00 25165961 /usr/lib64/libgcc_s-11-20231218.so.1
ffffb1260000-ffffb1261000 r--p 0001f000 fd:00 25165961 /usr/lib64/libgcc_s-11-20231218.so.1
ffffb1261000-ffffb1262000 rw-p 00020000 fd:00 25165961 /usr/lib64/libgcc_s-11-20231218.so.1
ffffb1262000-ffffb128b000 r-xp 00000000 fd:00 666155 /usr/lib/ld-linux-aarch64.so.1
ffffb128b000-ffffb1297000 rw-p 00000000 00:00 0
ffffb129a000-ffffb129b000 r--s 00000000 00:15 19 /sys/fs/selinux/status
ffffb129b000-ffffb129d000 rw-p 00000000 00:00 0
ffffb129d000-ffffb129f000 r--p 00000000 00:00 0 [vvar]
ffffb129f000-ffffb12a0000 r-xp 00000000 00:00 0 [vdso]
ffffb12a0000-ffffb12a2000 r--p 0002e000 fd:00 666155 /usr/lib/ld-linux-aarch64.so.1
ffffb12a2000-ffffb12a4000 rw-p 00030000 fd:00 666155 /usr/lib/ld-linux-aarch64.so.1
ffffe4de4000-ffffe4e05000 rw-p 00000000 00:00 0 [stack]
ただのbash prompt
locale周りを持ってるのがわかる
[root@vbox ~]# cat /proc/1222/maps
aaaaae8c0000-aaaaae9fb000 r-xp 00000000 fd:00 16926506 /usr/bin/bash
aaaaaea0c000-aaaaaea10000 r--p 0013c000 fd:00 16926506 /usr/bin/bash
aaaaaea10000-aaaaaea19000 rw-p 00140000 fd:00 16926506 /usr/bin/bash
aaaaaea19000-aaaaaea24000 rw-p 00000000 00:00 0
aaaabb276000-aaaabb2f5000 rw-p 00000000 00:00 0 [heap]
ffff8a832000-ffff8a887000 r--p 00000000 fd:00 25725017 /usr/lib/locale/C.utf8/LC_CTYPE
ffff8a887000-ffff8a888000 r--p 00000000 fd:00 25725022 /usr/lib/locale/C.utf8/LC_NUMERIC
ffff8a888000-ffff8a889000 r--p 00000000 fd:00 25725025 /usr/lib/locale/C.utf8/LC_TIME
ffff8a889000-ffff8a88a000 r--p 00000000 fd:00 25725016 /usr/lib/locale/C.utf8/LC_COLLATE
ffff8a88a000-ffff8a88b000 r--p 00000000 fd:00 25725020 /usr/lib/locale/C.utf8/LC_MONETARY
ffff8a88b000-ffff8a896000 r-xp 00000000 fd:00 25535047 /usr/lib64/libnss_sss.so.2
ffff8a896000-ffff8a8aa000 ---p 0000b000 fd:00 25535047 /usr/lib64/libnss_sss.so.2
ffff8a8aa000-ffff8a8ab000 r--p 0000f000 fd:00 25535047 /usr/lib64/libnss_sss.so.2
ffff8a8ab000-ffff8a8ac000 rw-p 00010000 fd:00 25535047 /usr/lib64/libnss_sss.so.2
ffff8a8ac000-ffff8aa3a000 r-xp 00000000 fd:00 25725030 /usr/lib64/libc.so.6
ffff8aa3a000-ffff8aa58000 ---p 0018e000 fd:00 25725030 /usr/lib64/libc.so.6
ffff8aa58000-ffff8aa5c000 r--p 0019c000 fd:00 25725030 /usr/lib64/libc.so.6
ffff8aa5c000-ffff8aa5e000 rw-p 001a0000 fd:00 25725030 /usr/lib64/libc.so.6
ffff8aa5e000-ffff8aa6a000 rw-p 00000000 00:00 0
ffff8aa6a000-ffff8aa93000 r-xp 00000000 fd:00 25167283 /usr/lib64/libtinfo.so.6.2
ffff8aa93000-ffff8aaa6000 ---p 00029000 fd:00 25167283 /usr/lib64/libtinfo.so.6.2
ffff8aaa6000-ffff8aaaa000 r--p 0002c000 fd:00 25167283 /usr/lib64/libtinfo.so.6.2
ffff8aaaa000-ffff8aaab000 rw-p 00030000 fd:00 25167283 /usr/lib64/libtinfo.so.6.2
ffff8aaab000-ffff8aad4000 r-xp 00000000 fd:00 666155 /usr/lib/ld-linux-aarch64.so.1
ffff8aad4000-ffff8aad5000 r--p 00000000 fd:00 666152 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES
ffff8aad5000-ffff8aad6000 r--p 00000000 fd:00 25725023 /usr/lib/locale/C.utf8/LC_PAPER
ffff8aad6000-ffff8aad7000 r--p 00000000 fd:00 25725021 /usr/lib/locale/C.utf8/LC_NAME
ffff8aad7000-ffff8aade000 r--s 00000000 fd:00 8398401 /usr/lib64/gconv/gconv-modules.cache
ffff8aade000-ffff8aae2000 rw-p 00000000 00:00 0
ffff8aae2000-ffff8aae3000 r--p 00000000 fd:00 25725015 /usr/lib/locale/C.utf8/LC_ADDRESS
ffff8aae3000-ffff8aae4000 r--p 00000000 fd:00 25725024 /usr/lib/locale/C.utf8/LC_TELEPHONE
ffff8aae4000-ffff8aae5000 r--p 00000000 fd:00 25725019 /usr/lib/locale/C.utf8/LC_MEASUREMENT
ffff8aae5000-ffff8aae6000 r--p 00000000 fd:00 25725018 /usr/lib/locale/C.utf8/LC_IDENTIFICATION
ffff8aae6000-ffff8aae8000 r--p 00000000 00:00 0 [vvar]
ffff8aae8000-ffff8aae9000 r-xp 00000000 00:00 0 [vdso]
ffff8aae9000-ffff8aaeb000 r--p 0002e000 fd:00 666155 /usr/lib/ld-linux-aarch64.so.1
ffff8aaeb000-ffff8aaed000 rw-p 00030000 fd:00 666155 /usr/lib/ld-linux-aarch64.so.1
ffffc4bf7000-ffffc4c18000 rw-p 00000000 00:00 0 [stack]
[root@vbox ~]#
/proc/$PID/maps の各フィールドの意味
一般的に、/proc/$PID/maps の各フィールドは以下の意味を持ちます。
フィールド 説明
アドレス範囲 仮想アドレス空間における、ファイルがマッピングされた開始アドレスと終了アドレス
パーミッション ファイルの読み書き実行の許可
オフセット ファイルの先頭からのオフセット
デバイス ファイルシステムの種類とデバイス番号
inode ファイルのinode番号
ファイル名 マッピングされたファイルのパス名
LC_CTYPEの仮想アドレスがそれぞれ違うのがわかーる
[root@vbox ~]# ps aux | grep bash
root 1222 0.0 0.2 4792 3584 tty1 Ss+ 01:30 0:00 -bash
root 1259 0.0 0.2 4680 3456 pts/0 Ss 01:32 0:00 -bash
root 1306 0.0 0.2 4680 3584 pts/1 Ss+ 01:38 0:00 -bash
[root@vbox ~]# cat /proc/1222/maps | grep LC_CTYPE
ffff8a832000-ffff8a887000 r--p 00000000 fd:00 25725017 /usr/lib/locale/C.utf8/LC_CTYPE
[root@vbox ~]# cat /proc/1259/maps | grep LC_CTYPE
ffffabc28000-ffffabc7d000 r--p 00000000 fd:00 25725017 /usr/lib/locale/C.utf8/LC_CTYPE
[root@vbox ~]# cat /proc/1306/maps | grep LC_CTYPE
ffff879f8000-ffff87a4d000 r--p 00000000 fd:00 25725017 /usr/lib/locale/C.utf8/LC_CTYPE
Exploration Projects
6.1 On a Linux system, you can find the files mapped into a process’s address space by typing a command of the following form:
cat /proc/n/maps
where n is the process’s ID number. Read the documentation for proc in Section 5 of the online manual in order to understand the output format. Then look through the various processes’ maps to see if you can find a case where the same file is mapped into two processes’ address spaces, but at different virtual addresses. (On most Linux systems with a variety of networking software and so forth, such cases will exist.)