Giá trị tối đa của ID tiến trình là gì?
Ngoài ra, có thể thay đổi ID tiến trình không?
Giá trị tối đa của ID tiến trình là gì?
Ngoài ra, có thể thay đổi ID tiến trình không?
Câu trả lời:
Trên Linux, bạn có thể tìm thấy giá trị PID tối đa cho hệ thống của mình bằng cách này:
$ cat /proc/sys/kernel/pid_max
Giá trị này cũng có thể được ghi bằng cùng một tệp, tuy nhiên giá trị chỉ có thể được mở rộng tối đa theo lý thuyết là 32768 cho các hệ thống 32 bit hoặc 4194304 cho 64 bit:
$ echo 32768 > /proc/sys/kernel/pid_max
Dường như đó là thông lệ quy tắc trên hầu hết các hệ thống 64 bit để đặt giá trị này thành cùng giá trị như được tìm thấy trên các hệ thống 32 bit, nhưng đây là theo quy ước chứ không phải là một yêu cầu.
Từ 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).
Và không, bạn không thể thay đổi PID của một tiến trình đang chạy. Nó được gán dưới dạng số liên tiếp bởi kernel tại thời điểm quá trình bắt đầu và đó là định danh từ lúc đó. Điều duy nhất bạn có thể làm để có được một cái mới là mã của bạn rẽ nhánh một quy trình mới và chấm dứt quy trình cũ.
Những câu trả lời khác đã giải thích
/proc/sys/kernel/pid_max
cho Linux vàNhưng câu hỏi không chỉ định một hệ điều hành. Vì vậy, đây là một số người khác:
pidmax
trong /etc/system
- mặc định là 30.000 và có thể được đặt ở bất kỳ đâu trong khoảng từ 266 đến 999.999. Lưu ý rằng đây không phải max_nprocs
là một tham số có thể điều chỉnh kernel với chức năng khác biệt tinh tế.process_id_min
và process_id_max
quy định phạm vi ID quy trình được phép.Trên FreeBSD, giá trị của PID nằm trong khoảng từ 0 đến 99999 theo intro(2)
(liên kết) . Đây là một trích dẫn từ hướng dẫn:
Xử lý ID.
Mỗi quy trình hoạt động trong hệ thống được xác định duy nhất bởi một số nguyên không âm được gọi là ID quy trình. Phạm vi của ID này là từ 0 đến 99999.
Nếu bạn muốn tự đọc mã nguồn thì PID_MAX
được định nghĩa trong sys/sys/proc.h
(link) .