सत्र के नेता क्या हैं, ps -d
जिसमें सत्र के नेताओं को छोड़कर सभी प्रक्रियाओं का चयन किया जाता है ?
सत्र के नेता क्या हैं, ps -d
जिसमें सत्र के नेताओं को छोड़कर सभी प्रक्रियाओं का चयन किया जाता है ?
जवाबों:
लिनक्स में, हर प्रक्रिया में इसके साथ कई आईडी जुड़ी होती हैं, जिनमें शामिल हैं:
प्रोसेस आईडी (PID)
यह प्रक्रिया की पहचान करने वाली एक मनमानी संख्या है। प्रत्येक प्रक्रिया में एक विशिष्ट आईडी होती है, लेकिन प्रक्रिया से बाहर निकलने के बाद और मूल प्रक्रिया से बाहर निकलने की स्थिति को पुनः प्राप्त कर लिया जाता है, प्रक्रिया आईडी को एक नई प्रक्रिया द्वारा पुन: उपयोग करने के लिए मुक्त कर दिया जाता है।
पेरेंट प्रोसेस आईडी (PPID)
यह प्रक्रिया की केवल PID है जिसने प्रश्न में प्रक्रिया शुरू की है।
प्रोसेस ग्रुप आईडी (PGID)
यह प्रोसेस ग्रुप लीडर की सिर्फ PID है। यदि पीआईडी == पीजीआईडी, तो यह प्रक्रिया एक प्रक्रिया समूह नेता है।
सत्र आईडी (SID)
यह सत्र नेता का सिर्फ PID है। यदि PID == SID, तो यह प्रक्रिया एक सत्र नेता है।
सत्र और प्रक्रिया समूह एक इकाई के रूप में कई संबंधित प्रक्रियाओं का इलाज करने के तरीके हैं। एक प्रक्रिया समूह के सभी सदस्य हमेशा एक ही सत्र के होते हैं, लेकिन एक सत्र में कई प्रक्रिया समूह हो सकते हैं।
आम तौर पर, एक शेल एक सत्र का नेता होगा, और उस शेल द्वारा निष्पादित प्रत्येक पाइपलाइन एक प्रक्रिया समूह होगा। यह खोल के बच्चों को मारने के लिए आसान है जब यह बाहर निकलता है। (देखें गैरी विवरण के लिए बाहर निकलें (3) ।)
मुझे नहीं लगता कि सत्र या प्रक्रिया समूह के सदस्य के लिए एक विशेष शब्द है जो नेता नहीं है।
एक सत्र के नेता एक प्रक्रिया है जहाँ सत्र आईडी == प्रक्रिया आईडी। यह ध्वनित है, लेकिन सत्र आईडी बाल प्रक्रियाओं द्वारा विरासत में मिली है। UNIX / Linux के भीतर कुछ ऑपरेशन प्रक्रिया सत्रों पर काम करते हैं, उदाहरण के लिए, किल सिस्टम कॉल या कमांड को भेजते समय प्रक्रिया आईडी को नकारना। इसके लिए सबसे आम उपयोग तब होता है जब एक शेल से बाहर लॉगिंग होता है। ओएस भेज देगा kill -HUP -$$
, जो शेल के समान सत्र आईडी के साथ सभी प्रक्रियाओं के लिए एक SIGHUP (हैंगअप) संकेत भेजेगा। जब आप एक प्रक्रिया को समाप्त कर देते हैं, तो प्रक्रिया का सत्र आईडी शेल से बदल दिया जाता है, इसलिए यह हैंगअप सिग्नल का जवाब नहीं देगा। यह डेमन प्रक्रिया बनने की प्रक्रिया का एक हिस्सा है।
विंडो प्रबंधक / ग्राफिकल वातावरण से बुलाए जाने वाली अधिकांश प्रक्रियाओं में एक ही सत्र आईडी होती है जो एक स्टार्टअप प्रोग्राम की है। यह ओएस को kill -HUP -$$
सभी कार्यक्रमों पर एक ही ऑपरेशन करने की अनुमति देता है : जैसे कि आपका ब्राउज़र, म्यूजिक प्लेयर, लिबर्रेफिस, आईएम क्लाइंट आदि। ये ऐसी प्रक्रियाएं हैं जो सत्र के नेता नहीं हैं।
मुझे लगा कि मुझे इसका जवाब पता है, लेकिन मैंने यह पता लगाने के लिए एक सी प्रोग्राम लिखा।
#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
(या समतुल्य यदि लिनक्स पर नहीं है), और प्रक्रिया समूह और सत्र के बारे में यह देखने के लिए कि क्या आप इसे पढ़ सकते हैं, अनुभाग पढ़ें।
./sid
और nohup ./sid
, और जब आप चलाते हैं setsid ./sid
, सत्र आईडी (SID) बिल्कुल नया है और प्रक्रिया PID ... I के समान है मुझे यकीन नहीं है कि क्यों नोह ने कांटा रोका (या लगता है), लेकिन मुझे लगता है कि मुझे सामान्य विचार मिल गया है ...
ps xao pid,ppid,pgid,sid,comm
इन आईडी को देखने के लिए उपयोग करें ।