Şu anda yüklü olan paylaşılan nesneleri Linux'ta nasıl görebilirim?


34

İki tane ilgili sorum var:

  • Paylaşılan bir kitaplığın şu anda yüklü olup olmadığını nasıl görebilirim? (yani sistem çapında, işlem agnostik)
  • Bir işlem tarafından yüklenen tüm paylaşılan kütüphaneleri nasıl görebilirim?

Yanıtlar:


40

İkisiyle de yapabilirsiniz lsof. Hangi işlemlerin açık veya eşlenmiş bir kütüphanesi olduğunu görmek için:

lsof /path/to/lib.so

ve bir işlemin hangi dosyaların (paylaşılan kütüphaneler dahil) açıldığını ve / veya haritalandığını görmek için şunları yapın:

lsof -p <pid>

22

Bir işlemde neyin yüklü olduğunu görmenin başka bir yolu da /proc/PID/mapsdosyaya bakmaktır. Bu, içinde haritalanan paylaşılan nesneler de dahil olmak üzere adres alanınıza eşlenen her şeyi gösterir.


Gömülü ARM platformumda gayet iyi çalıştı. BusyBox uygulaması lsofise gerekli işlevselliğe sahip değildi.
— Alex Che

7
sudo grep libcairo.so /proc/*/maps

/proc/PID/maps Rich'in bahsettiği hepsini bir kerede keşfetmek için güzel bir yol . Örnek çıktı:

/proc/8390/maps:7f0a9afae000-7f0a9b0bc000 r-xp 00000000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b0bc000-7f0a9b2bc000 ---p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b2bc000-7f0a9b2bf000 r--p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b2bf000-7f0a9b2c0000 rw-p 00111000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9afae000-7f0a9b0bc000 r-xp 00000000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b0bc000-7f0a9b2bc000 ---p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b2bc000-7f0a9b2bf000 r--p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b2bf000-7f0a9b2c0000 rw-p 00111000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6

Ayrıca awkve bash-fu çıktıyı daha da daraltabilir.

Bu yöntem aynı zamanda bir Ubuntu 18.04 ile hacklenmiş bu minimal kurulumladlopen test edilmiş kütüphaneleri de gösterir .sleep(1000)


4

Bir sonraki komutu root ile çalıştırabilir ve tam bir liste görebilirsiniz.

cat /proc/*/maps | awk '{print $6;}' | grep '\.so' | sort | uniq

Bu, lsof'u olmayan kullanıcılar içindir.


Kullanıcının bunu denemesini neden istiyorsun? Lütfen cevabınızı daha iyi anlamak için düzenleyin .
— CaldeiraG
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.