Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

अपनी रूबी स्क्रिप्ट की प्रक्रिया का नाम कैसे बदलें जैसा कि `टॉप` और `पीएस` . द्वारा दिखाया गया है

जब भी आप linux या OSX पर कोई प्रोग्राम चलाते हैं, तो यह एक प्रोसेस के अंदर चलता है। और हर प्रक्रिया का एक नाम होता है। जब आप ps या top, या htop जैसी कमांड चलाते हैं तो नाम वही दिखता है।

अपनी रूबी स्क्रिप्ट की प्रक्रिया का नाम कैसे बदलें जैसा कि `टॉप` और `पीएस` . द्वारा दिखाया गया है htop सबसे दाहिने कॉलम में प्रक्रिया के नाम दिखाता है।

डिफ़ॉल्‍ट प्रोसेस नेम चूस सकते हैं

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

लेकिन डिफ़ॉल्ट प्रक्रिया नाम कम सहायक होते हैं जब आपके पास रूबी स्क्रिप्ट होती है जिसे आप कमांड लाइन से चला रहे होते हैं। नीचे दिए गए उदाहरण में, मैं एक रूबी स्क्रिप्ट चला रहा हूं जो पांच सेकंड के लिए सोती है। यदि मैं एक साथ किसी अन्य टर्मिनल विंडो में "पीएस" चलाता हूं, तो मैं देखता हूं कि मेरे स्लीपर के लिए प्रक्रिया का नाम "रूबी स्लीप_5_सेकंड.आरबी" है। अगर मैं कमांड लाइन तर्क जोड़ना चाहता था, तो वे प्रक्रिया के नाम में भी दिखाई देंगे। इससे प्रक्रिया को नाम से संदर्भित करना मुश्किल हो जाएगा।

अपनी रूबी स्क्रिप्ट की प्रक्रिया का नाम कैसे बदलें जैसा कि `टॉप` और `पीएस` . द्वारा दिखाया गया है पूर्ण रूबी कमांड प्रक्रिया नाम के रूप में सूचीबद्ध है

प्रक्रिया का नाम कैसे बदलें

सौभाग्य से आप रूबी के साथ वर्तमान प्रक्रिया का नाम आसानी से बदल सकते हैं। यहाँ हमारी अद्यतन स्क्रिप्ट है। यह अब अपने प्रक्रिया नाम को "स्लीपर" पर सेट करता है।

# `Process.setproctitle()` is in Ruby >= 2.1
# For earlier versions of Ruby, you can use
#   $PROGRAM_NAME = "sleeper"
# or 
#   $0 = "sleeper"

Process.setproctitle("sleeper")
sleep 5

अब, जब हम प्रोग्राम चलाते हैं और इसका शीर्षक प्रदर्शित करने के लिए ps का उपयोग करते हैं, तो हमें "स्लीपर" मिलता है

अपनी रूबी स्क्रिप्ट की प्रक्रिया का नाम कैसे बदलें जैसा कि `टॉप` और `पीएस` . द्वारा दिखाया गया है रूबी में प्रोसेस टाइटल बदलने से ps का आउटपुट बदल जाता है और top

लेकिन इससे भी बेहतर, अब हम नाम से प्रक्रिया को आसानी से संदर्भित कर सकते हैं। मान लीजिए मैं अपने स्लीपर के सोने का इंतजार करते-करते थक गया हूं। मैं killall sleeper . कमांड का उपयोग करके इसे मार सकता हूं ।

अपनी रूबी स्क्रिप्ट की प्रक्रिया का नाम कैसे बदलें जैसा कि `टॉप` और `पीएस` . द्वारा दिखाया गया है आप killall का उपयोग कर सकते हैं नाम से प्रक्रियाओं को समाप्त करने का आदेश

प्रक्रिया के नाम से सर्वर की स्थिति प्रदर्शित करना

प्रक्रिया शीर्षक बदलने की हमारी नई क्षमता का एक दिलचस्प उपयोग लंबी चलने वाली प्रक्रियाओं के लिए स्थिति की जानकारी प्रदर्शित करना है। यदि आपने कभी यूनिकॉर्न चलाया है, तो यह परिचित दिखना चाहिए:

\-+= 27185 deply unicorn master -c simple_unicorn_config.rb -l0.0.0.0:8080
   |--- 27210 deply unicorn worker[0] -c simple_unicorn_config.rb -l0.0.0.0:8080
   |--- 27211 deply unicorn worker[1] -c simple_unicorn_config.rb -l0.0.0.0:8080
   |--- 27212 deply unicorn worker[2] -c simple_unicorn_config.rb -l0.0.0.0:8080
   |--- 27213 deply unicorn worker[3] -c simple_unicorn_config.rb -l0.0.0.0:8080

यह चार बाल प्रक्रियाओं के साथ यूनिकॉर्न का एक उदाहरण है। जैसे हमारे स्लीप_5_सेकंड.आरबी उदाहरण के साथ, प्रक्रिया नाम केवल प्रक्रियाओं को लॉन्च करने के लिए उपयोग किए गए कमांड दिखाते हैं।

यदि कार्यकर्ता व्यस्त है या निष्क्रिय है तो स्थिति रेखाओं को प्रदर्शित करना उपयोगी हो सकता है। कुछ इस तरह:

\-+= 27185 deply unicorn master -c simple_unicorn_config.rb -l0.0.0.0:8080
   |--- 27210 deply unicorn worker[0] -c simple_unicorn_config.rb -l0.0.0.0:8080 BUSY
   |--- 27211 deply unicorn worker[1] -c simple_unicorn_config.rb -l0.0.0.0:8080
   |--- 27212 deply unicorn worker[2] -c simple_unicorn_config.rb -l0.0.0.0:8080
   |--- 27213 deply unicorn worker[3] -c simple_unicorn_config.rb -l0.0.0.0:8080 BUSY

आप वास्तव में इसे रैक मिडलवेयर के साथ बहुत आसानी से कर सकते हैं। यह कैसा दिखाई दे सकता है इसका एक उदाहरण यहां दिया गया है:

class UpdateProcessTitle
  def initialize(app)
    @app = app
  end

  def call(env)
    title = $0
    $0 = $0 + " BUSY"
    status, headers, body = @app.call(env)
    $0 = title
    [status, headers, body]
  end
end

मुझे प्रत्येक वेब पेज अनुरोध पर प्रक्रिया शीर्षक सेट करने के प्रदर्शन प्रभावों के बारे में कोई जानकारी नहीं है। तो यह सब नमक के एक दाने के साथ लें। लेकिन फिर भी, यह एक बहुत अच्छा विचार है।

यदि आप इस विचार का अधिक उन्नत कार्यान्वयन देखना चाहते हैं - एक जिसे वास्तव में उत्पादन में उपयोग किया गया है - थॉमस वारानेकस की महान ब्लॉग पोस्ट ओवरराइडिंग यूनिकॉर्न वर्कर प्रोसेस नेम्स पर देखें।


  1. फेसबुक पर अपना नाम कैसे बदलें

    क्या फेसबुक पर आपका वर्तमान नाम अब फिट नहीं है कि आप कौन हैं? शादी करने से लेकर बीच बनाम पहले नाम से जाने की चाहत तक, आप फेसबुक पर अपना नाम बदल सकते हैं। हालांकि कुछ प्रतिबंध हैं, प्रक्रिया आश्चर्यजनक रूप से सरल है, खासकर फेसबुक के लिए। अपनी सीमाएं जानें फेसबुक पर अपना नाम बदलने से पहले, फेसबुक के

  1. अपने iPhone का नाम कैसे बदलें (और आपको क्यों चाहिए)

    आपके नए iPhone का एक नाम है जिसमें डिफ़ॉल्ट रूप से आपका वास्तविक नाम शामिल होता है। जब तक आप अपने Apple ID के लिए छद्म नाम का उपयोग नहीं करते हैं या अपना iPhone सेट करते समय, आपका वास्तविक नाम आपके iPhone के नाम में भी दिखाई देगा। अपने iPhone का नाम बदलने का तरीका यहां बताया गया है। यह ट्यूटोरियल य

  1. फेसबुक पर अपना नाम कैसे बदलें

    फेसबुक पर अपना प्रोफाइल नाम अपडेट या संपादित करना चाहते हैं? चाहे आपकी अभी-अभी शादी हुई हो, या केवल मनोरंजन के लिए Facebook पर अपना नाम बदलना चाहते हों। यहां फेसबुक पर प्रोफाइल नाम बदलने के चरण दिए गए हैं। फेसबुक को किसी परिचय की आवश्यकता नहीं है। यह एक लोकप्रिय सोशल नेटवर्किंग साइट है जो अपने उपय