Sembolik bağların evrensel benzeri Linux üzerinde, ancak (bunları emüle Cygwin günleri hariç) başka bir yerde yoktur. AIX ve Solaris'te de var, ancak sembolik değiller. Portably, açık dosyalar hakkında bilgi almak için yükleyin ./proc/PID/fd/NUM
/proc/PID/fd/NUM
lsof
İle birleşir /proc/PID/fd
Linux altında , ID PID işleminin NUM dosya tanımlayıcısında açık olduğu dosyaya biraz sihirli sembolik bir bağlantıdır . Bu bağlantı sihirlidir, örneğin, dosya kaldırılsa bile dosyaya erişmek için kullanılabilir. Bağlantı dosyayı yeniden adlarıyla da izler. işaret eden bir sihirli sembolik link nerede PID linki erişen süreçtir./proc/PID/fd/NUM
/proc/self
/proc/PID
Bu özellik neredeyse tüm Linux sistemlerinde bulunur. Proc dosya sistemi için sürücü tarafından sağlanır , ancak teknik olarak isteğe bağlıdır, ancak gömülü sistemlerde bile neredeyse hiç dışarıda bırakılmadığı birçok şey ( ps
işi yapmak - okur ) dahil olmak üzere kullanılır./proc/PID
Cygwin
Cygwin, Linux'ları (Cygwin süreçleri için) ve ./proc/PID/fd/NUM
/proc/self
Solaris (2.6 sürümünden beri), AIX
Her bir dosya tanımlayıcı için girişler vardır , ancak bunlar açılan dosya ile aynı türdedir, bu nedenle dosyanın yolu hakkında bilgi vermezler. Bununla birlikte , dosyayı açık olan sürece raporlamakla aynı bilgileri rapor ederler, bu nedenle dosyanın hangi dosya sisteminde bulunduğunu ve inode numarasını belirlemek mümkündür. Dizinler sembolik bağlantılar olarak görünür, ancak bunlar sadece takip edilebilecek ve boş bir dize döndüren sihirli sembollerdir ./proc/PID/fd
stat
fstat
readlink
AIX altında procfiles
komut, bir işlemin açık dosyaları hakkında bazı bilgiler görüntüler. Solaris altında, pfiles
komut bir işlemin açık dosyaları hakkında bazı bilgiler görüntüler. Bu, dosyanın yolunu içermez (Solaris'te, Solaris 10'dan beri yapar, aşağıya bakın).
Buna ek olarak , modern Solaris sürümlerinde Linux'un sembollerine benzer sembolik bağlantılar vardır . Bir süreç hakkında komut gösterileri bilgi yolları da dahil olmak üzere açık dosyaları var./proc/PID/fd/NUM
/proc/PID/path/NUM
/proc/PID/fd/NUM
pfiles
/proc/PID/fd
işlem tarafından açılan her dosya tanımlayıcısı için bir kayıt (satır) içeren bir metin dosyasıdır. Dosya adı orada izlenmez.
/proc/PID/
bir dizin, ancak dosya tanımlayıcıları hakkında herhangi bir bilgi içermiyor.
/proc
Dosya tanımlayıcılarına doğrudan erişimi olan ancak doğrudan erişimi olmayan birleştirmeler
(Not: bazen altından erişilebilen bellek görüntüsüne bakarak bir işlemin açık dosyaları hakkında bilgi almak mümkündür /proc
. Bunu “doğrudan erişim” olarak saymıyorum.)
Unices bir dosya/proc/PID
Proc dosya sisteminin kendisi UNIX 8. baskıda başladı , ancak farklı bir yapıya sahipti ve Plan 9'dan geçerek bazı birleşimlere döndü. Bence tüm işletim sistemleri /proc
her PID için bir giriş var, ama birçok sistemde, normal bir dosya, bir dizin değil. Aşağıdaki sistemler aşağıdakilerle birlikte okunmalıdır :/proc/PID
ioctl
- 2.5'e kadar Solaris
- OSF / 1 artık Tru64 olarak biliniyor
- IRIX (?)
- SCO (?)
MINIX 3, dizinler dahil olmak üzere birçok Linux benzeri bileşen sağlayan bir procfs sunucusuna sahiptir . Ancak bu yoktur ./proc/PID/
/proc/PID/fd
FreeBSD'nin dizinleri vardır, ancak açık dosya tanımlayıcıları hakkında bilgi sağlamazlar. (Bununla birlikte , Linux'lara benzer , sembolik bir bağlantı aracılığıyla yürütülebilir dosyaya erişim sağlar.)/proc/PID/
/proc/PID/file
/proc/PID/exe
FreeBSD'nin procfs'si kullanımdan kaldırıldı .
Olmayan birlikler /proc
- HP-UX
- OpenBSD
- NetBSD
- Mac OS X
Diğer kanallardan dosya tanımlayıcı bilgileri
fuser
Açık bir Belirtilen dosya açın veya bir dosya var süreçler belirtilen komut listeleri bağlama noktası. Bu komut standarttır (tüm XSI uyumlu sistemlerde kullanılabilir, örn. X / Açık Sistem Arabirim Uzantısına sahip POSIX).
Bu yardımcı program ile bir işlemden dosya adlarına gidemezsiniz.
Lsof “açık dosyaları listele” anlamına gelir. Çoğu unix varyantı için kullanılabilen (ancak genellikle varsayılan kurulumun bir parçası olmayan) bir üçüncü taraf aracıdır . Yukarıdaki analizler sizi şüphelendirmiş olabileceğinden, açık dosyalar hakkında bilgi almak sisteme çok bağlıdır. Lsof sürdürücüsü, hepsini tek bir arayüz altında birleştirme işini yapmıştır.
Ne tür zorluklarla karşılaşmanız gerektiğini görmek için SSS bölümünü okuyabilirsiniz . Çoğu birimlerde, açık dosyaların adları hakkında bilgi edinmek için çekirdek veri yapılarının ayrıştırılması gerekir. SSS 3.3'den alıntılar “Neden tam yol adlarını bildirmiyor?”:
Lsof, aşağıdaki lehçelerin çekirdek adı önbelleklerinden yol adı bileşenleri alamaz:
Yalnızca Linux çekirdeği, açık dosyalar hakkında koruduğu yapılarda tam yol adlarını kaydeder; bunun yerine, çoğu çekirdek yol adlarını aygıta ve düğüm numarası çiftlerine dönüştürür ve dosyalar açıldıktan sonra bunları sonraki dosya başvuruları için kullanır.
Bilgileri lsof
çıkışından ayrıştırmanız gerekiyorsa , -F
modu (satır başına bir alan), tercihen -F0
modu (boş sınırlandırılmış alanlar) kullandığınızdan emin olun . Belirli bir işlemin belirli bir dosya tanıtıcısı hakkında bilgi almak için kullanmak -a
ile seçeneği ve örneğin .-p PID
-d NUM
lsof -a -p 123 -d 0 -F0n
/dev/fd/NUM
geçerli sürecin dosya tanımlayıcıları için
Birçok unix varyantı, bir işlemin açık dosyalarına bir dosya adı ile erişmesini sağlar: açılış , çağrı ile eşdeğerdir . Bu adlar, bir program bir dosya adı istediğinde, ancak zaten açık olan bir dosyayı (örn. Bir boru veya soket) geçirmek istediğinizde kullanışlıdır; örneğin proses ikamesi uygulayan mermiler bunları mümkün olan yerlerde kullanır (mevcut olmayan geçici bir adlandırılmış boru kullanarak )./dev/fd/NUM
dup(NUM)
/dev/fd
Var /dev/fd
olduğunda, genellikle (her zaman?) Eşanlamlıları da vardır (bazen sembolik bağlantılar, bazen sabit bağlantılar, bazen eşdeğer özelliklere sahip sihirli dosyalar) /dev/stdin
= /dev/fd/0
, /dev/stdout
= /dev/fd/1
, /dev/stderr
= /dev/fd/2
.
- Linux altında,
/dev/fd
simgesel bir bağlantıdır /proc/self/fd
.
- Çoğu unice altında ( IRIX , OpenBSD , NetBSD , SCO, Solaris ,…), girişler
/dev/fd
karakter aygıtlarıdır. Genellikle dosya tanımlayıcısının açık olup olmadığı görünür ve belirli bir sayının üzerindeki dosya tanımlayıcıları için girişler kullanılamayabilir.
- FreeBSD ve OSX altında, fdescfs dosya sistemi
/dev/fd
çağıran sürecin açık tanımlayıcılarını takip eden dinamik bir dizin sağlar . /dev/fd
Mevcut bir statik mevcut /dev/fd
değil.
- OSF / 1 (Tru64) altında fdfs
/dev/fd
aracılığıyla sağlanır .
- Hiçbir yoktur
/dev/fd
AIX veya HP-UX üzerinde.
pfiles
komut dosya tanımlayıcıları yolunu gösterir. Bu bilgileri,/proc/<pid>/path
bahsedebileceğiniz dizinden de alır. Bkz. Docs.oracle.com/cd/E19253-01/817-0547/esxiq/index.html