Bir uygulamayı açtığımda hangi dosyaların yürütüldüğünü nasıl bilebilirim?


12

Bazı uygulamaları açtığımda ekranın arkasında ne olduğunu bilmek istiyorum. Örneğin, firefox'u açtığımda hangi dosyaların okunduğunu ve hangi dosyaların yürütüldüğünü bilmek istiyorum. Bunu yapmanın bir yolu var mı? Terminalden firefox açıldığında bile herhangi bir bilgi gösterilmez. İşletim Sistemi: Ubuntu 12.04

Yanıtlar:


21

Kullanın strace!

Örnek: Bir oturum sırasında Firefox tarafından açılan tüm dosyaları listeleyin:

strace -f firefox 2>&1 | grep 'open('

FireFox'un ikinci bir örneğini açarsanız böyle bir şeyle sonuçlanır: http://pastebin.com/iRqxgiWN ('-f' seçeneği, strace takip işlemi çatallarını yapar.)

Örnek 2: FireFox tarafından yürütülen tüm işlemleri listeleyin:

strace -f firefox 2>&1 | grep -P 'exec[vlpe]*\('

YouTube'u ziyaret ederken böyle bir şeyle sonuçlanır:

[pid 25020] execve("/usr/lib/firefox/plugin-container", ["/usr/lib/firefox/plugin-containe"..., "/usr/lib/adobe-flashplugin/libfl"..., "-greomni", "/usr/lib/firefox/omni.ja", "-appomni", "/usr/lib/firefox/browser/omni.ja", "-appdir", "/usr/lib/firefox/browser", "15198", "false", "plugin"], [/* 57 vars */]) = 0
[pid 25024] execve("/bin/sh", ["sh", "-c", "ps x | grep netscape"], [/* 57 vars */]) = 0
[pid 25025] execve("/bin/ps", ["ps", "x"], [/* 57 vars */] <unfinished ...>
[pid 25026] execve("/bin/grep", ["grep", "netscape"], [/* 57 vars */]) = 0

Bunu diğer birçok sistem çağrısı ile de yapabilirsiniz ...

Parametrelerini eşleştirerek open()senin içinde greparama da dosyanın hangi modda açılmıştır öğrenebilirsiniz:

Sadece eklemek | grep -P 'O_RDONLY|O_RDWR'filtre okuma erişimi ya da (lider çizgi karakteri önemlidir!) | grep -P 'O_WRONLY|O_RDWR'Komutunuza yazma erişimi için ...

DÜZENLE :

Yorumlarda belirtildiği gibi, strace -fe open firefoxFireFox tarafından açılan tüm dosyaları listelemek için de kullanabilirsiniz . FireFox tarafından dosya yolu bağımsız değişken olarak (open, stat, lstat, chmod, access, ...) yapılan tüm dosya işlemlerini strace -fe trace=file firefoxlistelemek için de kullanabilirsiniz .

Çok daha fazlası var! Check out strace (1) kılavuz sayfasına.


1
Firefox'un "netscape" i işlem listesinden çıkarmak için bir kabuk çalıştıracağına oldukça şaşırdım.
Michael

1
strace, kapsamlı dahili filtreleme özelliklerine sahiptir. Örneğin, strace -e openyalnızca çağrıları göstermeye çalışın open().
John Kugelman

@Michael, kabuk sözdizimi olan bir boru ("|") kullandığından bir kabuk oluşturur. Aynı boruyu koddan manuel olarak kurabilirsiniz, ancak bir kabuğun bunu yapmasına izin vermek çok daha kolaydır - kullanıcıdan kabuk kaçış kodlarının geçirilme şansı olmadığından güvenlik açıklarına yol açabilir.
Alistair Buxton

1

aslında ayrıntılı mod olarak adlandırılan bir mod var ama firefox böyle bir seçeneğe sahip olduğundan emin değilim. Ancak sorun değil, her uygulama kendi günlüğünden oluşacaktır. Böylece günlük verilerini kontrol ederek uygulama etkinliğini kontrol edebilirsiniz.

Firefox için günlüğü etkinleştirmek istiyorsanız bunu kontrol edebilirsiniz.

http://bertrandbenoit.blogspot.in/2011/09/activate-logging-for-mozilla.html

Ubuntu'daki her uygulama etkinliği kendi özel günlükleri ile kontrol edebilirsiniz. tüm uygulamalar /var/logdizinde oturum açacaktır .

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.