मैं एक रनिंग प्रोग्राम की कमांड लाइन तर्क कैसे पता करूं?


77

मैं एक टूल या विधि की तलाश कर रहा हूं ताकि यह पता लगाया जा सके कि प्रोग्राम में कमांड लाइन पैरामीटर क्या पारित किया गया है, उदाहरण के लिए जब इसे दूसरे प्रोग्राम (लॉन्चर-एप्लिकेशन परिदृश्य) द्वारा चलाया गया था।

जवाबों:


68

आप उस का उपयोग कर सकते हैं प्रक्रिया एक्सप्लोरर

इसे शुरू करने के लिए उपयोग की जाने वाली कमांड लाइन के तर्क देखने के लिए बस अपने माउस के साथ एक प्रक्रिया पर होवर करें:
enter image description here

वैकल्पिक रूप से, आप इसे खोल सकते हैं गुण प्रक्रिया का निरीक्षण करें और कमांड लाइन का सही निरीक्षण करें:
enter image description here


2
यह वास्तव में अच्छा है।
cutrightjm

2
दुर्भाग्य से, यह WinLicense / Themida के साथ संरक्षित अनुप्रयोगों के साथ काम नहीं करता है: oreans.com/winlicense.php कोई अन्य विचार?
Gepard

@ जीपर्ड: आप कैसे जानते हैं कि यह काम नहीं करता है? क्या आपको यकीन है कि आवेदन, वास्तव में, कमांड लाइन तर्क के साथ बुलाया गया था? किसी भी तरह से, पीई का उपयोग करता है विंडोज तरीका है उस जानकारी का निर्धारण। मैं किसी भी चीज को किसी विशिष्ट एप्लिकेशन के अनुरूप बनाना चाहता हूं, मैं मानता हूं।
Der Hochstapler

6
मेरा बुरा, यह पीई ऊंचा नहीं चला। यह इरादा के अनुसार काम कर रहा है।
Gepard

@ ऑलिवरसल्ज़बर्ग, यह कार्यक्रम कैसे काम करता है? क्या कोई सामान्य सी प्रोग्राम इसे प्राप्त कर सकता है?
Pacerier

81

आप इसे Windows की WMI सेवा का उपयोग करके, बिना प्रोसेस एक्सप्लोरर के भी कर सकते हैं। कमांड प्रॉम्प्ट से निम्नलिखित चलाएँ:

WMIC path win32_process get Caption,Processid,Commandline

यदि आप आउटपुट को फ़ाइल में डंप करना चाहते हैं (इसे पढ़ना थोड़ा आसान है), / OUTPUT स्विच का उपयोग करें:

WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline

4
अच्छा, आपको यह कैसे पता चला?
Pacerier

4
@Pacerier: मुझे यकीन नहीं है कि ईमानदार हो ;-) मुझे लगता है कि यह डब्लूएमआई डॉक्स के आसपास खुदाई करने और आसपास खेलने से आया था क्योंकि मुझे उस समय कुछ के लिए डब्ल्यूएमआई का उपयोग करने की आवश्यकता थी।
Andy E

3
आप किस WMI डॉक्स का जिक्र कर रहे हैं?
Pacerier

2
यह एक रनिंग प्रोसेस की कमांड लाइन प्राप्त करने के लिए एक बहुत ही उपयोगी कमांड लाइन विधि थी। मेरे मामले में, मैं केवल एक विशिष्ट प्रक्रिया के लिए आउटपुट प्राप्त करने के लिए इसे थोड़ा मोड़ने में सक्षम था: WMIC पथ win32_process जहां "कैप्शन = 'cmd.exe'" कमांडलाइन प्राप्त करें
chriv

1
महान, और जहां क्लॉज वास्तव में कुछ SQL सुविधाओं का समर्थन करते हैं, उदा, जहां "cmd।% जैसा नाम"
zhaorufei

31

एक का उपयोग करके भी प्राप्त कर सकते हैं कार्य प्रबंधक

ओपन टास्क मैनेजर (CTRL-SHIFT-ESC, CTRL-ALT-DELETE या किसी अन्य विधि द्वारा)।

विंडोज 7 (और शायद विंडोज एक्सपी) के लिए:

  • "प्रक्रियाएं" टैब पर जाएं। "दृश्य" मेनू पर, "कॉलम चुनें ..." चुनें।
  • "कमांड लाइन" का चेकबॉक्स चेक करें और ओके पर क्लिक करें। (आपको इसे खोजने के लिए नीचे स्क्रॉल करना पड़ सकता है)

विंडोज 8 के लिए:

  • "विवरण" टैब पर जाएं। किसी भी कॉलम (जैसे नाम, पीआईडी ​​आदि) पर राइट-क्लिक करें और "कॉलम चुनें" का चयन करें।
  • "कमांड लाइन" का चेकबॉक्स चेक करें और ओके पर क्लिक करें। (आपको इसे खोजने के लिए नीचे स्क्रॉल करना पड़ सकता है)

वर्तमान में प्रदर्शित कॉलमों में कमांड लाइनों का एक कॉलम जोड़ा जाएगा।


1
मुझे वास्तव में आपको @JesseBarnum नहीं मिलता है, कोई भी कॉलम को हमेशा एक पूर्ण दृश्य हो सकता है, भले ही कमांड लाइन कितनी देर हो, सही नहीं है?
Jeromy Adofo

1
केवल अगर विंडो कमांड के आकार के लिए पर्याप्त चौड़ा है। यदि कमांड एक लंबी क्लासपैथ के साथ जावा प्रक्रिया की तरह है, जो खिड़की की चौड़ाई में फिट नहीं होगी।
Jesse Barnum

1
ठीक है, धन्यवाद। मुझे हालांकि यह समस्या नहीं है और वैसे भी मेरा कार्य प्रबंधक स्क्रॉल करने योग्य है - आपके बारे में पता नहीं है :-)। मुझे लगता है कि अगर आप मुझे कोशिश करने के लिए एक नमूना कार्यक्रम भेज सकते हैं, तो इसे सुलझा सकते हैं।
Jeromy Adofo

5
यह एक बहुत ही कम जवाब है, पता नहीं यह संभव था।
Hashim

3
मैं विंडोज टास्क मैनेजर के बारे में ऊपर कुछ टिप्पणियों को देखता हूं। यहां तक ​​कि अगर आप जावा कमांड को दिखाने के लिए 'कमांड लाइन' कॉलम सेट करते हैं, तो वास्तव में लंबी कमांड लाइन छोटी हो जाएगी। लेकिन, आप टास्क मैनेजर में पंक्ति पर क्लिक कर सकते हैं और पूरी पंक्ति को 'कॉपी' (Ctrl-c) कर सकते हैं और इसे टेक्स्ट एडिटर में पेस्ट कर सकते हैं, चाहे वह कितनी भी लंबी क्यों न हो।
JohnD

5

बचाव के लिए शक्तियां।

Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'} | ForEach-Object { Invoke-WmiMethod -Path $_.__Path –Name Terminate }

बोनस के रूप में खोजें और मारें। यदि आप अपना सिस्टम सेटअप प्राप्त कर चुके हैं, तो आप इसे सीधे पॉवरशेल से या पीएस 1 से चला सकते हैं। मैं अप्रतिबंधित स्क्रिप्ट सेटअप का विस्तार करता हूं मैं शक्तियों के साथ लाश को मार डालो साथ ही अन्य शक्तियां चाल ...


वाह ... मार भाग काफी खतरनाक है, इस सवाल का शीर्षक दिया;) अन्य बहुत साफ जवाब;)
Tom

3

यदि प्रक्रिया पहले से चल रही है और किसी भी जल्द समाप्त नहीं होने जा रही है, तो पिछले उत्तर बहुत अच्छे हैं। हालाँकि, यदि आपको इसकी आवश्यकता है (जैसा कि मैंने किया था) शायद ऐसा करने की प्रक्रिया कई बार शुरू होती है और / या जल्दी से समाप्त हो जाती है, या शायद एक लंबे समय में लॉग इन होती है, तो इसका उपयोग करने का एक तरीका है प्रक्रिया की निगरानी

मूल रूप से यह सिस्टम में विभिन्न घटनाओं को लॉग करता है, इस मामले में हम "प्रोसेस स्टार्ट" इवेंट को फ़िल्टर कर सकते हैं और प्रक्रिया का नाम जिसे हम मॉनिटर करना चाहते हैं, जैसा कि नीचे दिखाया गया है:

enter image description here

फिर बस प्रक्रिया की निगरानी चालू रखें और जिस प्रक्रिया को आप लॉग इन करना चाहते हैं उसे प्राप्त करने के लिए आप जो कुछ भी करते हैं वह करें। आप "विवरण" कॉलम या "कमांड लाइन" कॉलम में देख सकते हैं (यह निर्भर करता है कि आप कैसे कॉन्फ़िगर करते हैं) कमांड लाइन के तर्क। उदाहरण के लिए:

enter image description here

बेशक इस तरह से आप बहुत अधिक संबंधित जानकारी निकाल सकते हैं जैसे कि कार्यशील निर्देशिका क्या है, प्रक्रिया पर पर्यावरण चर क्या पारित किए गए हैं, आदि ... इसके अलावा परिणामों को फ़ाइल में निर्यात करना आसान है।


1

उपयोग करते समय Cygwin , अगर मैं ए अजगर प्रक्रिया, यह कमांड लाइन का एक उदाहरण है:

c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py

परंतु प्रक्रिया एक्सप्लोरर केवल मुख्य exe देखता है:

Process Explorer not detecting full command line of Python process

(ध्यान दें "पथ: [प्रक्रिया संदेश खोलने में त्रुटि]" (देखें EDIT-1))। के लिए एक ही परिणाम tasklist:

C:\>tasklist | find "python" /i
python2.7.exe                 5740 Console                    1    15.312 KB

तो, मैं अब तक पता है कि केवल चाल, के माध्यम से यह मिल रहा है सिगविन बैश शेल pgrep:

Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py

यह जानना उपयोगी है, जब तक कि सिगविन विंडोज में कोई समस्या नहीं करता है, और आप इसका उपयोग कई पॉसिक्स और पायथन प्रोग्राम चलाने के लिए कर सकते हैं।

संपादित करें: विंडोज में आपको टास्कलिस्ट के लिए प्रशासक के निजीकरण की आवश्यकता नहीं है। साइगविन में आपको एक प्रशासक की प्रक्रिया को देखने में सक्षम होने की आवश्यकता होगी (जो मुझे अधिक तर्कसंगत लगता है: पूर्ण कमांड-लाइन हो सकती है पासवर्ड जैसे कुछ पैरामीटर अंदर), इसलिए हमें चलना चाहिए Cygwin में बैश ऊपर उठाया प्रशासक मोड

EDIT-1: प्रोसेस एक्सप्लोरर को एडमिनिस्ट्रेटर के रूप में चलाने पर यह समस्या नहीं होगी। इशारा करने के लिए धन्यवाद, @ स्पेसर।


2
यदि आप व्यवस्थापक के रूप में दौड़ते हैं तो आप नहीं देख पाएंगे [Error opening process message]
Pacerier

आप सही थे, @Pacerier। याद करने के लिए बहुत स्पष्ट :-)। धन्यवाद। मैंने इसे दर्शाने के लिए अपनी पोस्ट संपादित की है।
Sopalajo de Arrierez

-3

के लिए जाओ run या गोटो start और खोज:

tasklist -m

tasklist -svc

5
यह कॉलिंग कमांड लाइन नहीं दिखाता है। /m लोड किए गए मॉड्यूल (DLL, आदि) और दिखाता है /svc प्रत्येक प्रक्रिया में होस्ट की गई सेवाओं को दिखाता है।
Bob
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.