ค่าสูงสุดของ ID กระบวนการคืออะไร
นอกจากนี้ยังเป็นไปได้ที่จะเปลี่ยนรหัสกระบวนการหรือไม่
ค่าสูงสุดของ ID กระบวนการคืออะไร
นอกจากนี้ยังเป็นไปได้ที่จะเปลี่ยนรหัสกระบวนการหรือไม่
คำตอบ:
บน Linux คุณสามารถค้นหาค่า PID สูงสุดสำหรับระบบของคุณด้วย:
$ cat /proc/sys/kernel/pid_max
ค่านี้สามารถเขียนได้โดยใช้ไฟล์เดียวกันอย่างไรก็ตามค่าสามารถขยายได้สูงสุดตามทฤษฎีเท่ากับ 32768 สำหรับระบบ 32 บิตหรือ 4194304 สำหรับ 64 บิต:
$ echo 32768 > /proc/sys/kernel/pid_max
ดูเหมือนว่าจะเป็นการปฏิบัติตามกฎเกณฑ์ในระบบ 64 บิตส่วนใหญ่เพื่อตั้งค่านี้ให้เป็นค่าเดียวกันกับที่พบในระบบ 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).
และไม่คุณไม่สามารถเปลี่ยน PID ของกระบวนการที่กำลังทำงานอยู่ได้ มันได้รับมอบหมายเป็นหมายเลขลำดับโดยเคอร์เนลในเวลาที่กระบวนการเริ่มต้นและนั่นคือมันเป็นตัวระบุจากเวลานั้น สิ่งเดียวที่คุณสามารถทำได้เพื่อรับรหัสใหม่คือให้โค้ดของคุณเป็นกระบวนการใหม่และยุติกระบวนการเก่า
คำตอบอื่น ๆ ได้อธิบายแล้ว
/proc/sys/kernel/pid_max
สำหรับ Linux และแต่คำถามไม่ได้ระบุระบบปฏิบัติการ ดังนั้นนี่คือบางส่วนอื่น ๆ :
pidmax
ใน/etc/system
- ค่าเริ่มต้นที่ 30,000 ที่สามารถตั้งค่าใดก็ได้ระหว่างและ 266 999,999 โปรดทราบว่านี่ไม่ใช่max_nprocs
ซึ่งเป็นพารามิเตอร์ที่ปรับได้ของเคอร์เนลที่มีฟังก์ชั่นที่แตกต่างกันอย่างละเอียดprocess_id_min
และprocess_id_max
กำหนดช่วงของ ID กระบวนการที่อนุญาตบน FreeBSD ค่าของ PID อยู่ระหว่าง 0 และ 99999 ตาม(ลิงค์)intro(2)
นี่คือคำพูดจากคู่มือ:
ID กระบวนการ
แต่ละกระบวนการที่ใช้งานอยู่ในระบบจะถูกระบุด้วยจำนวนเต็มที่ไม่เป็นลบที่เรียกว่ารหัสกระบวนการ ช่วงของ ID นี้คือ 0 ถึง 99999
หากคุณต้องการที่จะอ่านรหัสที่มาด้วยตัวคุณเองแล้วPID_MAX
จะกำหนดไว้ใน(ลิงค์)sys/sys/proc.h