`PS` এ" সেশন লিডার "কী কী?


78

অধিবেশন নেতারা কী, যেমন ps -dঅধিবেশন নেতা ছাড়া সমস্ত প্রক্রিয়া নির্বাচন করে?

উত্তর:


84

লিনাক্সে, প্রতিটি প্রক্রিয়াটির সাথে সম্পর্কিত বিভিন্ন আইডি রয়েছে:

  • প্রক্রিয়া আইডি (পিআইডি)

    এটি প্রক্রিয়া সনাক্তকারী একটি স্বেচ্ছাসেবী সংখ্যা। প্রতিটি প্রক্রিয়াটির একটি স্বতন্ত্র আইডি থাকে তবে প্রক্রিয়াটি প্রস্থান হওয়ার পরে এবং মূল প্রক্রিয়াটি প্রস্থান স্থিতি পুনরুদ্ধার করার পরে, প্রক্রিয়া আইডি একটি নতুন প্রক্রিয়া দ্বারা পুনরায় ব্যবহারের জন্য মুক্ত হয়।

  • মূল প্রক্রিয়া আইডি (পিপিআইডি)

    এটি প্রক্রিয়াটির কেবলমাত্র পিআইডি যা প্রশ্নটি প্রক্রিয়া শুরু করে।

  • প্রক্রিয়া গ্রুপ আইডি (পিজিআইডি)

    এটি প্রক্রিয়া গ্রুপ নেতার কেবলমাত্র পিআইডি। যদি পিআইডি == পিজিআইডি হয়, তবে এই প্রক্রিয়াটি একটি প্রক্রিয়া গ্রুপ লিডার।

  • সেশন আইডি (এসআইডি)

    এটি সেশন নেতার কেবলমাত্র পিআইডি। যদি পিআইডি == এসআইডি হয়, তবে এই প্রক্রিয়াটি একটি সেশন লিডার।

সেশন এবং প্রক্রিয়া গ্রুপগুলি একক হিসাবে সম্পর্কিত বিভিন্ন প্রসেসের চিকিত্সার কেবল উপায়। কোনও প্রক্রিয়া গোষ্ঠীর সমস্ত সদস্য সর্বদা একই সেশনের অন্তর্ভুক্ত তবে একটি সেশনে একাধিক প্রক্রিয়া গ্রুপ থাকতে পারে।

সাধারণত, শেলটি একটি সেশন লিডার হবে এবং সেই শেলের দ্বারা চালিত প্রতিটি পাইপলাইন একটি প্রক্রিয়া গ্রুপ হবে। এটি খোলার বাচ্চাদের বাইরে বেরোনোর ​​সময় তাকে হত্যা করা সহজ করে তোলে। ( ক্ষতিকারক বিশদের জন্য প্রস্থান দেখুন (3) ।)

আমি মনে করি না কোনও অধিবেশন বা প্রক্রিয়া গ্রুপের সদস্যের জন্য একটি বিশেষ শব্দ রয়েছে যা নেতা নয় isn't


5
দ্রষ্টব্য: ps xao pid,ppid,pgid,sid,commএই আইডিগুলি দেখতে ব্যবহার করুন ।
মাইক আর

1
লোকেরা কেন এই ধরণের চিত্রের বাস্তব বিশ্বের তুলনা ভিত্তিক উত্তর দেয় না .. +1
রুটফিনিক্স

24

সেশন লিডার এমন একটি প্রক্রিয়া যেখানে সেশন আইডি == প্রসেস আইডি। এটি সুরক্ষিত শোনায় তবে সেশন আইডি শিশু প্রক্রিয়া অনুসারে উত্তরাধিকার সূত্রে প্রাপ্ত। ইউএনআইএক্স / লিনাক্সের মধ্যে কিছু ক্রিয়াকলাপ প্রক্রিয়া সেশনে পরিচালিত হয়, উদাহরণস্বরূপ, কিল সিস্টেম কল বা কমান্ড প্রেরণের সময় প্রক্রিয়া আইডিকে অবহেলা করা। এটির সর্বাধিক সাধারণ ব্যবহার হ'ল শেলটি লগ আউট করার সময়। ওএস প্রেরণ করবে kill -HUP -$$, যা শেলের মতো একই সেশন আইডি সহ সমস্ত প্রক্রিয়াতে একটি সিগআপ (হ্যাঙ্গআপ) সংকেত প্রেরণ করবে। আপনি যখন কোনও প্রক্রিয়া অস্বীকার করবেন তখন প্রক্রিয়াটির সেশন আইডিটি শেল থেকে পরিবর্তিত হয়, সুতরাং এটি হ্যাঙ্গআপ সংকেতের সাড়া দেয় না। এটি একটি ডিমন প্রক্রিয়া হওয়ার প্রক্রিয়ার একটি অংশ।

উইন্ডো ম্যানেজার / গ্রাফিক্যাল এনভায়রনমেন্ট থেকে ডেকে আনা বেশিরভাগ প্রসেসের একটি সেশন প্রোগ্রামের মতো একই সেশন আইডি থাকে। এটি ওএসকে kill -HUP -$$সমস্ত প্রোগ্রামে একই ক্রিয়াকলাপ করতে দেয় : যেমন আপনার ব্রাউজার, সঙ্গীত প্লেয়ার, লাইব্রোফাইস, আইএম ক্লায়েন্ট ইত্যাদি These এই প্রক্রিয়াগুলি সেশন লিডার নয়।


দয়া করে কিছু মনে করবেন না তবে আমার আরও কিছুটা স্পষ্টির প্রয়োজন হতে পারে - - সেশন লিডার একজন, অন্যরা কী বলা হয় এবং তারা কী পছন্দ করে (আচরণ, তারা সেশন লিডার থেকে আলাদা কী)?
it_me

তাদের আমি অধিবেশন সদস্য বলা হয়, বিশ্বাস করি।
আর্গেজ

আমি আপনার ব্যাখ্যাটি পছন্দ করি তবে আমি এখনও একটি পয়েন্ট মিস করছি: আইআইইউসি, যে কোনও সময় আমি শুরু করা প্রতিটি প্রক্রিয়াটি আসলে আমি যে শেলটি দিয়ে লগইন করেছিলাম তার সন্তানের (যদি আমি এটি অস্বীকার না করি তবে অবশ্যই)। কেন ওএস কেবল প্রক্রিয়া গাছের উপর দিয়ে হেঁটে এই প্রক্রিয়াটির সমস্ত ভাইবোন এবং তাদের ভাইবোনদের হত্যা করবে না? (আসলে আমি যা ভেবেছিলাম তা হ'ল ... আজ অবধি: ডি) তারপরে সেশন ব্যবহার করার পিছনে যুক্তি কী?
অ্যালোস মাহডাল

যখন প্রক্রিয়াটি আর আসল সেশনের অংশ না থাকে তখন এটি নির্ধারণের দরকার হয় (উদাহরণস্বরূপ লগইন শেল বা ডিমন)। একটি চিন্তা হতে পারে স্বয়ংক্রিয়ভাবে পিপিআইডি (প্যারেন্ট পিড) 1 এ পরিবর্তন করা যায় তবে এটি প্রক্রিয়া গাছকে ভেঙে দেয়। একটি নতুন সেশন আইডি এমন একটি গোষ্ঠী তৈরি করে যা একত্রে সংকেত প্রেরণ করা যায়। এর উদাহরণ জিইউআই, পৃথক অধিবেশন হিসাবে ফায়ার ফক্স ফায়ার করুন। তারপরে, [এক্স] বোতামটি টিপলে, ফায়ারফক্সের অধিবেশন এবং তার বাচ্চাদের একটি সংকেত প্রেরণ করুন, তবে উইন্ডো ম্যানেজারটি প্রভাবিত হয় না - সরাসরি পিপিআইডি-পিআইডি সম্পর্কগুলির সাথে এটি করতে পারে না।
আর্জেজ

যখন জিইউআই মারা যায়, তখন পুরো প্রক্রিয়া গাছটি, সেশন গ্রুপটি নয়, সংকেত পেতে পারে। দুটি পৃথক পছন্দসই আচরণ: একটি 'অ্যাপ' হত্যা (ফায়ারফক্স এবং তার প্লাগইনগুলি মেরে ফেলা), সমস্ত শিশু প্রক্রিয়া হত্যার বিপরীতে (একটি গুই থেকে বেরিয়ে আসা)। ইমাস এবং ক্রোমের সাথে একই ধরণের কাজগুলি আশা করি।
আর্জি

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

লিনাক্স (২.6.৩৯) কী ফিরিয়ে দিয়েছে তা দেখে আমি একপ্রকার অবাক হয়েছি। আমি সেকশন 7 ম্যান পৃষ্ঠা, "শংসাপত্রগুলি "ও পেয়েছি।

আমার পরামর্শটি হ'ল man 7 credentials(বা লিনাক্সে না থাকলে সমমান) এবং প্রসেস গ্রুপ এবং সেশন সম্পর্কে বিভাগটি পড়ুন আপনি এটি ধাঁধা দিতে পারেন কিনা তা দেখুন।


1
লিনাক্স নবাগত হওয়ার কারণে, আপনি কী বলেছিলেন তা আমি বের করতে পারিনি। দেখে মনে হচ্ছে আপনিও কি বিস্মিত? তবে আপনি সম্ভবত বুঝতে পারবেন যে আর্জের উত্তর কী বোঝাতে চেয়েছিল able আপনি যদি তা করেন তবে আপনি কি আরও স্পষ্ট করে একই ব্যাখ্যা করতে পারেন?
it_me

আকর্ষণীয় ... ধন্যবাদ ... সুতরাং, সেশন আইডি (এসআইডি) হল টার্মিনালের পিআইডি এবং ./sidএবং nohup ./sidআপনি যখন চালনা setsid ./sidকরেন সেশন আইডি (এসআইডি) একেবারে নতুন এবং প্রক্রিয়া পিআইডি হিসাবে একই ... আমি ' আমি নিশ্চিত না কেন নোহুপ কাঁটাচামড়া আটকেছিল (বা মনে হচ্ছে) তবে আমি মনে করি আমি সাধারণ ধারণা পেয়েছি ...
পিটার.ও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.