2008-08-19 21 views
75

लिनक्स के लिए मेरे पसंदीदा टूल में से एक lsof है - एक असली स्विस सेना चाकू!मैं कैसे निर्धारित कर सकता हूं कि विंडोज में एक विशिष्ट फ़ाइल खुलती है या नहीं?

आज मैंने खुद को यह सोचकर पाया कि WinXP सिस्टम पर कौन से प्रोग्राम एक विशिष्ट फ़ाइल खुले थे। क्या lsof के लिए कोई समकक्ष उपयोगिता है? इसके अतिरिक्त, प्रश्न में फ़ाइल नेटवर्क शेयर पर थी इसलिए मुझे यकीन नहीं है कि इससे मामलों को जटिल बना दिया जाए।

उत्तर

61

Sysinternals Suite से Process Explorer का उपयोग करें, ढूँढें हैंडल या डीएलएल फ़ंक्शन आपको उस फ़ाइल के साथ प्रक्रिया की खोज करने देगा।

+0

क्या यह वास्तव में प्रश्न का उत्तर देता है? प्रक्रिया एक्सप्लोरर आपको यह देखने देता है कि किसी विशेष प्रक्रिया/हैंडल/डीएल/जो भी हो, के लिए कौन सी फाइलें खुली हैं, लेकिन यह रिवर्स मैपिंग है। इस सवाल के लिए मेरा उत्तर http://stackoverflow.com/questions/15708/lsof-equivalent-for-windows#188337 देखें। –

+5

हां यह करता है। खोजें हैंडल या डीएल (या Ctrl-F दबाएं) पर क्लिक करें, उस फ़ाइल के नाम पर टाइप करें जिसे आप खोज रहे हैं, और आप उस फ़ाइल के साथ प्रक्रियाओं की एक सूची के साथ समाप्त होते हैं। –

+0

प्रोसेस एक्सप्लोरर का नाम बदलकर अब "प्रोसेस मॉनिटर" में बंडल किया गया है। –

4

यदि आप अपने "कंप्यूटर" (या "मेरा कंप्यूटर") आइकन पर राइट-क्लिक करें और पॉप-अप मेनू से "प्रबंधित करें" का चयन करें, जो आपको कंप्यूटर प्रबंधन कंसोल पर ले जाएगा।

वहां, सिस्टम टूल्स \ साझा फ़ोल्डर के तहत, आपको "फ़ाइलें खोलें" मिलेंगी। यह शायद आप जो चाहते हैं उसके करीब है, लेकिन अगर फ़ाइल नेटवर्क शेयर पर है तो आपको उस सर्वर पर वही करना होगा जिस पर फ़ाइल रहता है।

+3

ध्यान दें कि यह केवल साझा की गई फ़ाइलों को दिखाता है जो अन्य नेटवर्क उपयोगकर्ताओं द्वारा खुले हैं। यह स्थानीय सिस्टम पर खुली फ़ाइलों को खोजने में मदद नहीं करता है। सर्वर पर ऐसा करने से शायद आपको बताएगा कि कौन सा उपयोगकर्ता फ़ाइल खोलता है, लेकिन उस उपयोगकर्ता की मशीन पर कौन सा प्रोग्राम नहीं है। प्रोसेस एक्सप्लोरर (जैसा कि @JayHofacker द्वारा उल्लिखित) ने मेरे लिए अच्छा काम किया। – tomlogic

8

Handle आज़माएं। Filemon & Regmon यह पता लगाने के लिए भी बहुत अच्छा है कि आपके सिस्टम में डुसे प्रोग्राम प्रोग्राम क्या कर रहा है।

+0

कोशिश की और संभाला पसंद आया। धन्यवाद। – Batandwa

+0

@ स्लीपसेक फ़ाइलमॉन और रेगमन अब विंडोज 2000 एसपी 4, विंडोज एक्सपी एसपी 2 के साथ विंडोज़ के संस्करणों पर [प्रोसेस मॉनिटर v3.2] (https://technet.microsoft.com/en-us/sysinternals/bb896645) द्वारा प्रतिस्थापित किया गया है, विंडोज सर्वर 2003 एसपी 1, और विंडोज विस्टा। – Lucky

5

Unlocker आज़माएं।

अनलॉकर साइट में निफ्टी चार्ट है (लिंक का पालन करने के बाद नीचे स्क्रॉल करें) जो अन्य टूल्स की तुलना दिखाता है। स्पष्ट रूप से ऐसी तुलना आमतौर पर पक्षपातपूर्ण होती है क्योंकि उन्हें आम तौर पर टूल लेखक द्वारा लिखा जाता है, लेकिन चार्ट कम से कम विकल्पों को सूचीबद्ध करता है ताकि आप उन्हें अपने लिए आज़मा सकें।

+4

अनलॉकर केवल लॉक की गई फाइलों को सूचीबद्ध करता है, फ़ाइलों को खोला नहीं जाता है। अधिकांश विंडोज सॉफ़्टवेयर डीएलएल को लॉक करता है लेकिन यह आपके दस्तावेज़ों का उपयोग नहीं करता है। – Tobias

36

lsof -p pid के बराबर, sysinternals संभालने के लिए और listdlls से संयुक्त उत्पादन होता है यानी

handle -p pid 
listdlls -p pid 

आप sysinternals pslist साथ पीआईडी ​​पता कर सकते हैं।

5

फ़ाइल एक .dll तो आप जिसका इसे खोलने मिला देखने के लिए कार्यसूची कमांड लाइन का उपयोग कर सकते है:

TaskList /M nameof.dll 
2

उपयोग प्रोसेस एक्सप्लोरर प्रक्रिया आईडी खोजने के लिए। फिर कौन सी फाइलें खुली हैं, यह जानने के लिए Handle का उपयोग करें।

जैसे संभाल -p

मैं क्योंकि तुम खुद माइक्रोसॉफ्ट से उपयोगिताओं का उपयोग कर रहे इस दृष्टिकोण की तरह।

+0

अगर हमारे पास केवल – Paladin

1

OpenedFilesView में, विकल्प मेनू के तहत, "नेटवर्क फ़ाइलें दिखाएं" नामक एक मेनू आइटम है। शायद उस सक्षम के साथ, उपर्युक्त उपयोगिता कुछ उपयोग का है।

5

lsof में से एक बराबर Sysinternals 'संभाल और listdlls, यानी से उत्पादन जोड़ा जा सकता है:

c:\SysInternals>handle 
[...] 
------------------------------------------------------------------------------ 
gvim.exe pid: 5380 FOO\alois.mahdal 
    10: File (RW-) C:\Windows 
    1C: File (RW-) D:\some\locked\path\OpenFile.txt 
[...] 

c:\SysInternals>listdlls 
[...] 
------------------------------------------------------------------------------ 
Listdlls.exe pid: 6840 
Command line: listdlls 

    Base  Size  Version   Path 
    0x00400000 0x29000 2.25.0000.0000 D:\opt\SysinternalsSuite\Listdlls.exe 
    0x76ed0000 0x180000 6.01.7601.17725 C:\Windows\SysWOW64\ntdll.dll 
[...] 

c:\SysInternals>listdlls 

दुर्भाग्य से, आप उन्हें इस्तेमाल करने में सक्षम हो "प्रशासक के रूप में चलाने के" करने के लिए है ।

इसके अलावा listdlls और संभाल निरंतर तालिका जैसी प्रपत्र तो फ़ाइल नाम पीआईडी ​​छिपाने को छानने का उत्पादन नहीं करते। findstr /c:pid: /c:<filename>, तुम बहुत दोनों उपयोगिताओं के साथ करीब हालांकि

c:\SysinternalsSuite>handle | findstr /c:pid: /c:Driver.pm 
System pid: 4 \<unable to open process> 
smss.exe pid: 308 NT AUTHORITY\SYSTEM 
avgrsa.exe pid: 384 NT AUTHORITY\SYSTEM 
[...] 
cmd.exe pid: 7140 FOO\alois.mahdal 
conhost.exe pid: 1212 FOO\alois.mahdal 
gvim.exe pid: 3408 FOO\alois.mahdal 
    188: File (RW-) D:\some\locked\path\OpenFile.txt 
taskmgr.exe pid: 6016 FOO\alois.mahdal 
[...] 

यहाँ हम देख सकते हैं कि gvim.exe इस फाइल को खोलने के लिए होने से एक है चाहिए।

3

एक प्रोग्राम "ओपनफाइल" है, जो विंडोज 7 का हिस्सा प्रतीत होता है। ऐसा लगता है कि यह वही कर सकता है जो आप चाहते हैं। यह दूरस्थ उपयोगकर्ताओं (फ़ाइल शेयर के माध्यम से) द्वारा खोले गए फाइलों को सूचीबद्ध कर सकता है और "ओपनफाइल/लोकल ऑन" और सिस्टम पुनरारंभ करने के बाद, यह स्थानीय रूप से खोले गए फाइलों को दिखाने में सक्षम होना चाहिए। बाद में प्रदर्शन दंड कहा जाता है।

+0

पर स्रोत कोड था, तो मैं यहां यह पता लगाने के लिए एक तरीका ढूंढ रहा हूं कि मुझे फ़ोल्डर को हटाने से कैसे रोक रहा है और पुनरारंभ करने से बचें, और मुझे लगता है कि मुझे जिस कमांड की आवश्यकता है उसे कॉन्फ़िगरेशन सेटअप की आवश्यकता है ... आपने अनुमान लगाया .... एक पुनरारंभ की आवश्यकता है। कितनी खिड़कियां – Gus

संबंधित मुद्दे

 संबंधित मुद्दे