প্রক্রিয়া আইডির সর্বোচ্চ মান কত?


42

প্রক্রিয়া আইডির সর্বোচ্চ মান কত?

এছাড়াও, একটি প্রক্রিয়া আইডি পরিবর্তন করা সম্ভব?

উত্তর:


61

লিনাক্সে, আপনি এটির সাহায্যে আপনার সিস্টেমে সর্বাধিক পিআইডি মান খুঁজে পেতে পারেন:

$ cat /proc/sys/kernel/pid_max

এই মানটি একই ফাইল ব্যবহার করেও রচনা করা যেতে পারে, তবে মানটি 32 বিট সিস্টেমের জন্য তাত্ত্বিক সর্বোচ্চ 32768 বা 64 বিটের জন্য 4194304 পর্যন্ত প্রসারিত হতে পারে:

$ echo 32768 > /proc/sys/kernel/pid_max

এটি বেশিরভাগ bit৪ বিট সিস্টেমে এই মানটিকে 32 বিট সিস্টেমে পাওয়া মান হিসাবে একই মান হিসাবে সেট করার আদর্শিক অনুশীলন বলে মনে হয়, তবে এটি প্রয়োজনের পরিবর্তে কনভেনশন দ্বারা হয়।

থেকে man 5 proc:

/proc/sys/kernel/pid_max  
  This file (new in Linux 2.5) specifies the value at which PIDs wrap around
  (i.e., the value in this file is one greater than the maximum PID). The
  default value for this file, 32768, results in the same range of PIDs as
  on earlier kernels. On 32-bit platfroms, 32768 is the maximum value for
  pid_max. On 64-bit systems, pid_max can be set to any value up to 2^22
  (PID_MAX_LIMIT, approximately 4 million).

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


এবং আমরা সঙ্গে কার্নেল বিট নিশ্চিত হতে পারেন এই
কুম্ভরাশি পাওয়ার

2
"পিআইডি পরিবর্তন করতে পারে না" গল্পের একটি উত্সাহী আধা-পাল্টে দৃষ্টান্তটি হ'ল বহুবিবাহিত প্রোগ্রামের ক্ষেত্রে, যেখানে সহায়ক থ্রেডগুলির মধ্যে একটি এক্সিকিউট করে ()। এটি পুরো প্রক্রিয়াটি ওভারলে করে, তবে পিআইডি (এক্সিকিউটিং থ্রেডের টিআইডি) পরিবর্তন করে।
fche

3
32 বিট মেশিনের জন্য একটি PID সর্বোচ্চ মান, 32767 নয় 32768. 0 নির্ধারণকারী এবং 1 init হয়, এবং তারপর ব্যবহারকারী প্রক্রিয়ার মাধ্যমে 32767. 2 পেতে

2
ব্যবহারকারী 129258 সঠিক, এবং ম্যানুয়াল পৃষ্ঠা এবং কার্নেল ডকো উভয়ের সাথে একমত। একটি PID এর সর্বোচ্চ অনুমোদিত মূল্য , যেমন প্রশ্নের অনুরোধ একাধিক কম যে সিউডো-ফাইলে মান।
JdeBP

1
@ ব্যবহারকারী 129258, এটি কেবল তখনই ধরে রাখে যদি আপনি আরম্ভ করেন। শেল থেকে সরাসরি বুটে যাওয়ার সম্ভাবনা সবসময়ই থাকে, চলুন ব্যস্তবক্সটি বলি এবং কাজ নিয়ন্ত্রণ না করে সেখান থেকে ম্যানুয়ালি কিছু করি। অথবা এমনকি কিছু স্টার্টআপ স্ক্রিপ রয়েছে এবং শেল থেকে ফিরে যেতে হবে। যে কোনও ক্ষেত্রে শেলটি PID 1 এ জাতীয় ক্ষেত্রে হবে।
টিম

9

অন্যান্য উত্তরগুলি ব্যাখ্যা করেছে

  • /proc/sys/kernel/pid_max লিনাক্স এবং
  • ফ্রিবিএসডি এর জন্য 99999

কিন্তু প্রশ্নটি কোনও অপারেটিং সিস্টেম নির্দিষ্ট করে নি। সুতরাং এখানে আরও কিছু রয়েছে:

  • সোলারিসে, কোনও প্রসেস আইডির সর্বাধিক মান হ'ল কার্নেল টিউনেবল প্যারামিটার - pidmaxইন /etc/system- এটি ডিফল্ট হয় 30,000 এবং এটি 266 এবং 999,999 এর মধ্যে যে কোনও জায়গায় সেট করা যায়। নোট করুন যে এটি নয় max_nprocs, যা একটি পৃথক কার্যকারিতা সহ কার্নেল টুনিয়েবল পরামিতি।
  • এইচপি-ইউএক্স 10-এ কার্নেল টিউনবলের নামকরণযোগ্য process_id_minএবং process_id_maxপ্রযোজ্য প্রক্রিয়া আইডির ব্যাপ্তি নির্ধারণ করে।
  • এআইএক্স-এ, প্রক্রিয়া আইডিগুলিতে একটি "প্রক্রিয়া স্লট" এবং "প্রজন্মের গণনা" ক্ষেত্র সহ বেশ কয়েকটি ক্ষেত্র সমন্বিত থাকে। সর্বাধিক সম্ভাব্য মান 0x03FFFFFE, কারণ ক্ষেত্রগুলি কেবল একটি পূর্ণসংখ্যার নীচের 26 বিট দখল করে এবং বিট # 0 প্রক্রিয়া # 1 ব্যতীত সর্বদা শূন্য থাকে।
  • ওপেনবিএসডি-তে সর্বোচ্চ 32766।
  • নেটবিএসডি-তে সর্বোচ্চ 30000।

ওপেনবিএসডি 6.5 হিসাবে, সর্বাধিক এখন ইন্ট্রো অনুসারে 99999 (2), 32766 নয়
কাইপি

4

ফ্রিবিএসডি-তে পিআইডি-র মান intro(2)(লিঙ্ক) অনুযায়ী 0 এবং 99999 এর মধ্যে থাকে । ম্যানুয়ালটির একটি উদ্ধৃতি এখানে:

প্রক্রিয়া আইডি।
সিস্টেমের প্রতিটি সক্রিয় প্রক্রিয়া একটি প্রসেস আইডি নামক অ-নেতিবাচক পূর্ণসংখ্যার দ্বারা স্বতন্ত্রভাবে চিহ্নিত করা হয়। এই আইডিটির পরিসীমা 0 থেকে 99999 পর্যন্ত।

আপনি যদি নিজে থেকে উত্স কোডটি পড়তে চান তবে (লিঙ্ক) এPID_MAX সংজ্ঞায়িত করা হয়েছে ।sys/sys/proc.h

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.