परिचय
किसी भी लिनक्स सर्वर के सुचारू संचालन और डिबगिंग की नींव पृष्ठभूमि में चल रही प्रक्रियाओं (processes) की सटीक निगरानी पर टिकी होती है। इस गाइड का उद्देश्य लिनक्स के सबसे महत्वपूर्ण प्रोसेस निरीक्षण टूल ps की आंतरिक कार्यप्रणाली और व्यावहारिक उपयोग को चरणबद्ध तरीके से समझाना है। उत्पादन परिवेश में सर्वाधिक प्रयुक्त ps aux और ps -ef के संरचनात्मक अंतरों को समझने के साथ-साथ, लक्षित फ़िल्टरिंग तथा सिस्टम संसाधनों के आधार पर सॉर्टिंग तकनीकों का लाइव टर्मिनल प्रदर्शन यहाँ प्रस्तुत किया गया है।
1. टर्मिनल सत्र की जांच और बुनियादी ps सिंटैक्स का उपयोग
ps यूटिलिटी ऑपरेटिंग सिस्टम में सक्रिय गतिविधियों का तात्कालिक स्नैपशॉट लेने का प्राथमिक साधन है।
किसी भी अतिरिक्त फ्लैग के बिना इस कमांड को चलाने पर केवल वही प्रोसेस सूचीबद्ध होते हैं जो वर्तमान शेल और टर्मिनल सत्र से सीधे जुड़े होते हैं।
इस प्राथमिक आउटपुट में प्रत्येक प्रोसेस का अद्वितीय पहचानकर्ता PID, संबद्ध टर्मिनल लाइन TTY, उपयोग किया गया संचयी प्रोसेसर समय TIME, तथा निष्पादित प्रोग्राम का नाम CMD प्रदर्शित होता है।
⚙️ [महत्वपूर्ण कमांड विकल्प]
-e, -A : ऑपरेटिंग सिस्टम में सक्रिय सभी प्रक्रियाओं को एक साथ प्रदर्शित करता है।-f : विस्तृत विवरण (Full-format) सक्रिय करता है, जिसमें ओनरशिप, पैरेंट प्रोसेस और निष्पादन पाथ शामिल होते हैं।-u : किसी विशिष्ट उपयोगकर्ता से जुड़ी प्रक्रियाओं को खोजने अथवा संसाधन-केंद्रित दृश्य प्राप्त करने के लिए उपयोग किया जाता है।-ef : सभी प्रक्रियाओं का व्यापक और सुव्यवस्थित विवरण देखने के लिए मानक यूनिक्स कॉम्बो।aux : बीएसडी (BSD) सिंटैक्स शैली, जो मेमोरी और सीपीयू खपत के सटीक प्रतिशत के साथ संपूर्ण सिस्टम का जायजा देती है।-p : किसी विशिष्ट प्रोसेस आईडी (PID) को इंगित करके केवल उसी की स्थिति की जांच करता है।

जब आप ps -f निष्पादित करते हैं, तो आउटपुट का दायरा काफी विस्तृत हो जाता है और यह पूर्ण प्रारूप में तब्दील हो जाता है।
यह दृश्य सामान्य कॉलमों के अतिरिक्त प्रोसेस शुरू करने वाले यूज़र अकाउंट (UID), उसके पैरेंट प्रोसेस का आईडी (PPID), निष्पादन प्रारंभ होने का सटीक समय (STIME), और कमांड लाइन में दिए गए सभी आर्गुमेंट्स को स्पष्ट करता है।
विशेष रूप से, पैरेंट-चाइल्ड प्रोसेस निर्भरता का विश्लेषण करने के लिए PPID फ़ील्ड सिस्टम प्रशासकों के लिए अत्यंत सहायक सिद्ध होती है।

2. BSD शैली का मानक: ps aux के माध्यम से संपूर्ण सिस्टम प्रक्रियाओं का विश्लेषण
ps aux सिंटैक्स बीएसडी परिपाटी का अनुसरण करता है, जो बिना हाइफ़न (-) के काम करता है और पूरे ऑपरेटिंग सिस्टम में सक्रिय प्रत्येक उपयोगकर्ता की प्रक्रियाओं को व्यापक रूप से सामने लाता है।
चूंकि आउटपुट अत्यधिक लंबा हो सकता है, इसलिए पहले 15 रिकॉर्ड्स को सुगम तरीके से पढ़ने हेतु head -n 15 पाइपलाइन का सहारा लिया गया है।
प्रदर्शित तालिकाओं में USER निष्पादनकर्ता को इंगित करता है, जबकि %CPU और %MEM क्रमशः प्रोसेसर क्षमता और रैम खपत का प्रतिशत दर्शाते हैं।VSZ कुल आवंटित वर्चुअल मेमोरी (KB) को दर्शाता है, जबकि RSS वर्तमान में रैम में मौजूद वास्तविक भौतिक मेमोरी (KB) का माप है।STAT कॉलम प्रोसेस की वर्तमान जीवनचक्र स्थिति को एनकोड करता है (जैसे निष्पादनरत R, स्लीप मोड S, या सत्र नियंत्रक s)।
इसके अलावा, START बूट/आरंभ समय, TIME कुल सीपीयू उपभोग अवधि, और COMMAND निष्पादन योग्य फ़ाइल का पूरा पाथ दिखाता है।

3. यूनिक्स/पॉज़िक्स मानक: ps -ef द्वारा पैरेंट-चाइल्ड वंशानुक्रम का पता लगाना
ps -ef पारंपरिक UNIX/POSIX सिंटैक्स पर आधारित है, जो संपूर्ण सिस्टम में सक्रिय सभी प्रोसेस का विस्तृत विवरण प्रस्तुत करता है।
टर्मिनल स्क्रीन पर आउटपुट को व्यवस्थित रखने और तुरंत शीर्ष प्रविष्टियों का अध्ययन करने के लिए इसे head -n 15 के साथ संयोजित किया गया है।
यहाँ UID निष्पादक का यूज़रनेम, PID वर्तमान प्रोसेस आईडी, और PPID इसके मूल (पैरेंट) प्रोसेस का पहचानकर्ता है।
इसके साथ ही C प्रोसेसर शेड्यूलिंग प्रायोरिटी/उपयोग, STIME लॉन्च का समय, TTY इनपुट डिवाइस, TIME सीपीयू चक्रों का संचित योग, और CMD संबंधित बाइनरी व उसके पैरामीटर्स का विवरण देता है।
खासकर जब किसी संदेहास्पद प्रोसेस के उत्पत्ति स्रोत का पता लगाना हो, तो PID और PPID की तुलना करके ट्री-स्ट्रक्चर को आसानी से समझा जा सकता है।

पदानुक्रम को और अधिक सहजता से समझने के लिए ps -ef --forest कमांड एक विज़ुअल ट्री संरचना तैयार करती है, जिससे पैरेंट और चाइल्ड प्रोसेस का संबंध साफ दिखने लगता है।
विशाल ट्री के शीर्ष स्तर के रूट और चाइल्ड प्रोसेस को तुरंत स्क्रीन पर देखने के लिए हमने head -n 20 का उपयोग किया है।CMD फ़ील्ड में इंडेंटेशन और \_ प्रतीकों के जरिए यह स्पष्ट हो जाता है कि कौन सा सब-प्रोसेस किस मुख्य डेमॉन अथवा बैकग्राउंड सर्विस से उत्पन्न हुआ है।
यह ट्री व्यू जटिल मल्टी-थ्रेडेड एप्लिकेशनों और निर्भर सेवाओं की ट्रेसिंग के लिए एक अनिवार्य उपकरण है।

4. व्यावहारिक कार्यप्रणाली: विशिष्ट प्रोसेस की खोज और संसाधन-आधारित सॉर्टिंग
फ़िल्टरिंग और सॉर्टिंग के व्यावहारिक अभ्यास के लिए, हम सबसे पहले sleep 300 & के जरिए 300 सेकंड तक बैकग्राउंड में चलने वाली एक डमी प्रोसेस शुरू करते हैं।

सक्रिय सूची में से केवल वांछित प्रोसेस निकालने के लिए ps aux | grep [s]leep कमांड का उपयोग किया जाता है। यहाँ ब्रैकेट ट्रिक ([s]) का उपयोग करने से grep कमांड स्वयं अपने ही खोज परिणाम में नहीं आती, और केवल वास्तविक sleep टास्क ही फ़िल्टर होता है।
इस आउटपुट से हम हाल ही में आरंभ किए गए sleep 300 की विशिष्ट PID (173), उसकी निष्क्रिय स्थिति (S), और निष्पादन समय की पुष्टि बिना किसी अव्यवस्था के कर सकते हैं।
![ps aux | grep [s]leep](/ubuntu/20261009_013732_15/captures/s04_c02_ps_aux___grep__s_leep.png)
सिस्टम में मेमोरी लीक्स या भारी प्रक्रियाओं की पहचान के लिए ps aux --sort=-%mem का उपयोग किया जाता है, जो रैम उपयोग (%MEM) के घटते क्रम में सूची को व्यवस्थित करता है।head -n 10 के साथ इस पाइपलाइन को जोड़कर हम उन शीर्ष 10 प्रक्रियाओं की तुरंत पहचान कर सकते हैं जो सर्वर की फिजिकल मेमोरी का सर्वाधिक उपभोग कर रही हैं।

इसी प्रकार, अत्यधिक सीपीयू खपत करने वाले कार्यों का पता लगाने के लिए ps aux --sort=-%cpu विकल्प का प्रयोग किया जाता है, जो प्रोसेसर उपयोग (%CPU) के अनुसार अवरोही क्रम में डेटा को सॉर्ट करता है।head -n 10 के साथ इसे निष्पादित करने से सिस्टम के सीपीयू बॉटलनेक्स का तुरंत पता चल जाता है और परफॉर्मेंस संबंधी समस्याओं का तुरंत निदान किया जा सकता है।

परीक्षण पूरा होने पर सिस्टम के संसाधनों को मुक्त करने के लिए pkill sleep चलाकर बैकग्राउंड में चल रहे sleep प्रोसेस को समाप्त कर दिया जाता है।

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