답변:
Linux에서는 다음을 사용하여 시스템의 최대 PID 값을 찾을 수 있습니다.
$ cat /proc/sys/kernel/pid_max
이 값은 동일한 파일을 사용하여 쓸 수도 있지만 32 비트 시스템의 경우 이론적 최대 값 인 32768 또는 64 비트의 경우 4194304까지만 확장 할 수 있습니다.
$ 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
in) /etc/system
이며 기본값은 30,000이며 266에서 999,999 사이에서 설정할 수 있습니다. 이 max_nprocs
기능은 미묘하게 다른 기능을 가진 커널 조정 가능 매개 변수 가 아닙니다 .process_id_min
하고 process_id_max
허용 가능한 프로세스 ID의 범위를 규정합니다.FreeBSD에서 PID의 값은 intro(2)
(link) 에 따라 0에서 99999 사이 입니다. 매뉴얼에서 인용 한 내용은 다음과 같습니다.
프로세스 ID.
시스템의 각 활성 프로세스는 프로세스 ID라는 음이 아닌 정수로 고유하게 식별됩니다. 이 ID의 범위는 0-99999입니다.
소스 코드를 직접 읽으려면 (link)에PID_MAX
정의되어 있습니다.sys/sys/proc.h