System Administration

बैच फ़ाइलों से पाइथन का उपयोग करके प्रक्रियाओं को कुशलतापूर्वक समाप्त करना

Spread the love

यह लेख बैच फ़ाइलों का उपयोग करके चल रही प्रक्रियाओं को समाप्त करने के तरीके का पता लगाता है, जिसे पायथन की शक्ति और लचीलेपन से बढ़ाया गया है। हम दो पायथन विधियों को कवर करेंगे—os मॉड्यूल का उपयोग करना और अधिक मज़बूत psutil लाइब्रेरी का उपयोग करना—और फिर इन्हें उपयोगकर्ता के अनुकूल बैच फ़ाइलों में एकीकृत करेंगे।

विषयसूची

पायथन के os मॉड्यूल का उपयोग करना

पायथन का os मॉड्यूल बुनियादी ऑपरेटिंग सिस्टम इंटरैक्शन प्रदान करता है, जिसमें प्रक्रिया समाप्ति भी शामिल है। हालाँकि, यह psutil की तुलना में कम विश्वसनीय है, जिसके लिए सटीक प्रक्रिया ID (PID) की आवश्यकता होती है और समान नाम वाली कई प्रक्रियाओं के लिए त्रुटि हैंडलिंग की कमी होती है। यह विधि सरल है लेकिन संभावित रूप से कम मज़बूत है।


import os
import sys

def kill_process(pid):
    try:
        os.kill(int(pid), 9)  # SIGKILL signal
        print(f"PID {pid} वाली प्रक्रिया समाप्त हो गई।")
    except OSError as e:
        print(f"प्रक्रिया {pid} को समाप्त करने में त्रुटि: {e}")

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("उपयोग: python kill_process.py <PID>")
        sys.exit(1)
    kill_process(sys.argv[1])

यह स्क्रिप्ट PID को कमांड-लाइन आर्ग्यूमेंट के रूप में स्वीकार करता है और जबरदस्ती समाप्ति के लिए सिग्नल 9 (SIGKILL) के साथ os.kill() का उपयोग करता है। SIGKILL का उपयोग करने से डेटा हानि हो सकती है; सावधानी के साथ प्रयोग करें।

पायथन के psutil लाइब्रेरी का उपयोग करना

psutil लाइब्रेरी प्रक्रिया प्रबंधन के लिए एक अधिक उन्नत और क्रॉस-प्लेटफ़ॉर्म दृष्टिकोण प्रदान करती है। यह नाम से पहचान करने की अनुमति देता है और कई उदाहरणों को प्रभावी ढंग से संभालता है।


import psutil
import sys

def kill_process_by_name(process_name):
    for proc in psutil.process_iter(['pid', 'name']):
        try:
            if proc.info['name'].lower() == process_name.lower(): #केस-संवेदनशील मिलान नहीं
                proc.kill()
                print(f"'{process_name}' प्रक्रिया (PID: {proc.info['pid']}) समाप्त हो गई।")
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess) as e:
            print(f"'{process_name}' प्रक्रिया को समाप्त करने में त्रुटि: {e}")

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("उपयोग: python kill_process_by_name.py <process_name>")
        sys.exit(1)
    kill_process_by_name(sys.argv[1])

यह स्क्रिप्ट इनपुट के रूप में प्रक्रिया का नाम लेता है और चल रही प्रक्रियाओं के माध्यम से पुनरावृति करता है, उन प्रक्रियाओं को समाप्त करता है जो नाम से मेल खाती हैं। त्रुटि हैंडलिंग शामिल है। psutil को स्थापित करें: pip install psutil

बैच फ़ाइल बनाना

आइए psutil स्क्रिप्ट को चलाने के लिए एक बैच फ़ाइल बनाएँ (ऊपर दी गई स्क्रिप्ट को kill_process_by_name.py के रूप में सहेजें)। एक बैच फ़ाइल बनाएँ (जैसे, kill_process.bat):


@echo off
python kill_process_by_name.py "notepad"
pause

“notepad” को लक्ष्य प्रक्रिया के नाम से बदलें। सुनिश्चित करें कि पायथन आपके सिस्टम के PATH पर्यावरण चर में है।

उत्तम अभ्यास और विचार

हमेशा इसके मज़बूती के लिए psutil विधि को प्राथमिकता दें। प्रक्रियाओं को जबरदस्ती समाप्त करते समय सावधान रहें, क्योंकि डेटा हानि संभव है। महत्वपूर्ण सिस्टम प्रक्रियाओं को समाप्त करने से बचें। बेहतर निगरानी और त्रुटि ट्रैकिंग के लिए अपने पायथन स्क्रिप्ट में लॉगिंग जोड़ने पर विचार करें।

समस्या निवारण

  • “एक्सेस अस्वीकृत”: बैच फ़ाइल चलाने के लिए व्यवस्थापक विशेषाधिकारों की आवश्यकता है।
  • पायथन स्क्रिप्ट नहीं चल रही है: सत्यापित करें कि पायथन आपके PATH में है, पायथन इंटरप्रेटर सही ढंग से निर्दिष्ट है, और स्क्रिप्ट पथ सटीक है।
  • प्रक्रिया नहीं मिली: प्रक्रिया के नाम को दोबारा जांचें (कुछ मामलों में केस-संवेदनशील)। सटीक नाम की पुष्टि करने के लिए कार्य प्रबंधक का उपयोग करें।

यह उन्नत गाइड बैच फ़ाइल से प्रक्रियाओं के प्रबंधन के लिए एक अधिक मज़बूत और सुरक्षित दृष्टिकोण प्रदान करता है। प्रक्रियाओं को समाप्त करते समय सावधानी बरतें।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *