Ş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.