`Ps` में“ सत्र के नेता ”क्या हैं?


78

सत्र के नेता क्या हैं, ps -dजिसमें सत्र के नेताओं को छोड़कर सभी प्रक्रियाओं का चयन किया जाता है ?

जवाबों:


84

लिनक्स में, हर प्रक्रिया में इसके साथ कई आईडी जुड़ी होती हैं, जिनमें शामिल हैं:

  • प्रोसेस आईडी (PID)

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

  • पेरेंट प्रोसेस आईडी (PPID)

    यह प्रक्रिया की केवल PID है जिसने प्रश्न में प्रक्रिया शुरू की है।

  • प्रोसेस ग्रुप आईडी (PGID)

    यह प्रोसेस ग्रुप लीडर की सिर्फ PID है। यदि पीआईडी ​​== पीजीआईडी, तो यह प्रक्रिया एक प्रक्रिया समूह नेता है।

  • सत्र आईडी (SID)

    यह सत्र नेता का सिर्फ PID है। यदि PID == SID, तो यह प्रक्रिया एक सत्र नेता है।

सत्र और प्रक्रिया समूह एक इकाई के रूप में कई संबंधित प्रक्रियाओं का इलाज करने के तरीके हैं। एक प्रक्रिया समूह के सभी सदस्य हमेशा एक ही सत्र के होते हैं, लेकिन एक सत्र में कई प्रक्रिया समूह हो सकते हैं।

आम तौर पर, एक शेल एक सत्र का नेता होगा, और उस शेल द्वारा निष्पादित प्रत्येक पाइपलाइन एक प्रक्रिया समूह होगा। यह खोल के बच्चों को मारने के लिए आसान है जब यह बाहर निकलता है। (देखें गैरी विवरण के लिए बाहर निकलें (3) ।)

मुझे नहीं लगता कि सत्र या प्रक्रिया समूह के सदस्य के लिए एक विशेष शब्द है जो नेता नहीं है।


5
नोट: ps xao pid,ppid,pgid,sid,commइन आईडी को देखने के लिए उपयोग करें ।
माइक आर

1
क्यों लोग इस तरह के चित्रण वास्तविक दुनिया की तुलना आधारित जवाब के अधिक नहीं देते हैं .. +1
रूटप्रोनिक्स

24

एक सत्र के नेता एक प्रक्रिया है जहाँ सत्र आईडी == प्रक्रिया आईडी। यह ध्वनित है, लेकिन सत्र आईडी बाल प्रक्रियाओं द्वारा विरासत में मिली है। UNIX / Linux के भीतर कुछ ऑपरेशन प्रक्रिया सत्रों पर काम करते हैं, उदाहरण के लिए, किल सिस्टम कॉल या कमांड को भेजते समय प्रक्रिया आईडी को नकारना। इसके लिए सबसे आम उपयोग तब होता है जब एक शेल से बाहर लॉगिंग होता है। ओएस भेज देगा kill -HUP -$$, जो शेल के समान सत्र आईडी के साथ सभी प्रक्रियाओं के लिए एक SIGHUP (हैंगअप) संकेत भेजेगा। जब आप एक प्रक्रिया को समाप्त कर देते हैं, तो प्रक्रिया का सत्र आईडी शेल से बदल दिया जाता है, इसलिए यह हैंगअप सिग्नल का जवाब नहीं देगा। यह डेमन प्रक्रिया बनने की प्रक्रिया का एक हिस्सा है।

विंडो प्रबंधक / ग्राफिकल वातावरण से बुलाए जाने वाली अधिकांश प्रक्रियाओं में एक ही सत्र आईडी होती है जो एक स्टार्टअप प्रोग्राम की है। यह ओएस को kill -HUP -$$सभी कार्यक्रमों पर एक ही ऑपरेशन करने की अनुमति देता है : जैसे कि आपका ब्राउज़र, म्यूजिक प्लेयर, लिबर्रेफिस, आईएम क्लाइंट आदि। ये ऐसी प्रक्रियाएं हैं जो सत्र के नेता नहीं हैं।


कृपया बुरा मत मानना, लेकिन मुझे थोड़ा और स्पष्टीकरण की आवश्यकता हो सकती है - - सत्र नेता एक है, दूसरों को क्या कहा जाता है, और वे क्या पसंद करते हैं (व्यवहार, वे सत्र नेता से अलग क्या करते हैं)?
इसका_मे

मुझे सत्र का सदस्य कहा जाता है, मुझे विश्वास है।
Arsege

मुझे आपकी व्याख्या पसंद है लेकिन मैं अभी भी एक बिंदु को याद कर रहा हूं: IIUC, किसी भी समय मैंने जो भी प्रक्रिया शुरू की है वह वास्तव में मेरे द्वारा लॉग किए गए शेल का बच्चा है (जब तक कि मैंने इसे अस्वीकार नहीं किया, निश्चित रूप से)। OS सिर्फ प्रोसेस ट्री क्यों नहीं चलाएगा और इस प्रक्रिया के सभी भाई-बहनों और उनके भाई-बहनों को मार देगा? (वास्तव में यही मैंने हमेशा सोचा था कि यह ... आज तक: डी) तो सत्रों का उपयोग करने के पीछे तर्क क्या है?
एलोइस महदाल

जब एक प्रक्रिया मूल सत्र (लॉगिन शेल या डेमॉन, उदाहरण के लिए) का हिस्सा नहीं है, तो यह निर्धारित करने से दूर रहना होगा। एक विचार PPID (पैरेंट पिड) को स्वचालित रूप से 1 में बदलने का हो सकता है, लेकिन यह प्रक्रिया पेड़ को तोड़ता है। एक नया सत्र आईडी एक समूह बनाता है जिसे एक साथ एक संकेत भेजा जा सकता है। इसका एक उदाहरण जीयूआई है, फायरफॉक्स को अलग सत्र के रूप में बंद करें। फिर, जब [X] बटन दबाया जाता है, तो सिग्नल को फ़ायरफ़ॉक्स के सत्र और उसके बच्चों को भेजें, लेकिन विंडो मैनेजर प्रभावित नहीं होता है - सीधे PPID-PID रिश्तों के साथ ऐसा नहीं कर सकता।
Arcege करें

जब GUI की मृत्यु हो जाती है, तब संपूर्ण प्रक्रिया ट्री, सत्र समूह नहीं, संकेत प्राप्त कर सकता है। दो अलग-अलग वांछित व्यवहार: एक 'ऐप' को मारना (फ़ायरफ़ॉक्स और उसके प्लगइन्स को मारना), बनाम सभी बच्चे प्रक्रियाओं को मारना (एक गुई से बाहर निकालना)। एमएसीएस और क्रोम के साथ समान कामकाज, मुझे उम्मीद है।
Arcege करें

13

मुझे लगा कि मुझे इसका जवाब पता है, लेकिन मैंने यह पता लगाने के लिए एक सी प्रोग्राम लिखा।

#include <stdio.h>
#include <unistd.h>

int
main(int ac, char **av)
{
        pid_t sid, mypid, pgid, gid;

        mypid = getpid();
        sid = getsid(0);
        pgid = getpgid(0);
        gid = getpgrp();

        printf("PID %d\n", mypid);
        printf("process group ID of session leader: %d\n", sid);
        printf("process group ID: %d\n", pgid);
        printf("process group ID: %d\n", gid);

        if (!fork())
        {
                mypid = getpid();
                sid = getsid(0);
                pgid = getpgid(0);
                gid = getpgrp();

                printf("child PID %d\n", mypid);
                printf("process group ID of session leader: %d\n", sid);
                printf("process group ID: %d\n", pgid);
                printf("process group ID: %d\n", gid);

                _exit(0);
        }

        return 0;
}

मैंने इसे संकलित किया, cc -g -o sid sid.c मैंने इसे कुछ अलग तरीके से चलाया, यह देखने के लिए कि क्या होता है:

./sid
nohup ./sid > sid.out
setsid ./sid

लिनक्स (2.6.39) ने जो दिया उससे मैं आश्चर्यचकित था। मुझे अनुभाग 7 मैन पेज, "क्रेडेंशियल्स" भी मिला।

मेरी सलाह है कि man 7 credentials(या समतुल्य यदि लिनक्स पर नहीं है), और प्रक्रिया समूह और सत्र के बारे में यह देखने के लिए कि क्या आप इसे पढ़ सकते हैं, अनुभाग पढ़ें।


1
एक Linux नौसिखिया होने के नाते, मैंने यह नहीं कहा कि आपने क्या कहा। लगता है आप भी हैरान हैं? लेकिन आप शायद यह जानने के लिए पर्याप्त रूप से जानकार हैं कि एर्स के जवाब का क्या मतलब है। यदि आप करते हैं, तो क्या आप कृपया इसे अधिक स्पष्टता में बता सकते हैं?
its_me

दिलचस्प ... धन्यवाद ... तो, सत्र आईडी (SID) टर्मिनल की PID है ./sidऔर nohup ./sid, और जब आप चलाते हैं setsid ./sid, सत्र आईडी (SID) बिल्कुल नया है और प्रक्रिया PID ... I के समान है मुझे यकीन नहीं है कि क्यों नोह ने कांटा रोका (या लगता है), लेकिन मुझे लगता है कि मुझे सामान्य विचार मिल गया है ...
पीटर.ओ.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.