Nếu chúng ta gõ ps -ef
thì chúng ta sẽ có một danh sách các quy trình. Tại sao các số PID không liên tục?
Nếu chúng ta gõ ps -ef
thì chúng ta sẽ có một danh sách các quy trình. Tại sao các số PID không liên tục?
Câu trả lời:
Trên Ubuntu chúng liên tục. Trên các hệ điều hành khác, nó có thể khác nhau.
Hạt nhân phân bổ các PID trong phạm vi (RESERVED_PIDS, PID_MAX_DEFAULT). Nó thực hiện tuần tự trong từng không gian tên (các tác vụ trong các không gian tên khác nhau có thể có cùng ID). Trong trường hợp phạm vi đã cạn kiệt, pid gán kết thúc tốt đẹp.
( /programming/3446727/how-does-linux-determine-the-next-pid )
Mặc dù ...
Một số chủ đề trên stackoverflow:
Trong các ý kiến là một lệnh để kiểm tra sự ám sát của các PID:
for i in {1..20}; do sh -c 'echo $$'; done
Thông thường PID là liên tục nhưng một số quá trình sẽ chết chỉ khi bạn chạy lệnh ps -ef
.
Ngoài ra một số quy trình có thể chỉ là một quy trình con của một quy trình khác không được hiển thị trong ps -ef
lệnh. Để xem một số kết quả mở rộng và bạn có thể kiểm tra PID liên tục, sử dụngpstree
pstree -p
Đầu ra mẫu:
├─teamviewerd(3468)─┬─{teamviewerd}(3474)
│ ├─{teamviewerd}(3475)
│ ├─{teamviewerd}(3476)
│ ├─{teamviewerd}(3477)
│ ├─{teamviewerd}(3478)
Trong khi nếu bạn chạy, ps -ef
bạn chỉ thấy quá trình cha.
$ ps -ef | grep teamviewerd
root 3468 1 0 Jul15 ? 00:07:38 /opt/teamviewer9/tv_bin/teamviewerd -f